文档章节

*【九度OJ1362】|【剑指offer20】顺时针打印矩阵

aqia358
 aqia358
发布于 2013/12/25 21:49
字数 489
阅读 98
收藏 9

题目描述:

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

输入:

输入可能包含多个测试样例,对于每个测试案例,

输入的第一行包括两个整数m和n(1<=m,n<=1000):表示矩阵的维数为m行n列。

接下来的m行,每行包括n个整数,表示矩阵的元素,其中每个元素a的取值范围为(1<=a<=10000)。

输出:

对应每个测试案例,输出一行,

按照从外向里以顺时针的顺序依次打印出每一个数字,每个数字后面都有一个空格。

样例输入:
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
样例输出:
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10

注:运行超时

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
 
public class Main {
 
    public int top = 0;
    public int bottom;
    public int left = 0;
    public int right;
    public int[][] a;
    public int length;
    private int count = 0;
 
    public Main(int bottom, int right, int[][] a) {
        this.bottom = bottom;
        this.right = right;
        this.a = a;
        this.length = (bottom + 1) * (right + 1);
    }
 
    public void print() {
        if (left > right && top > bottom)
            return;
        if (top <= bottom) {
            for (int i = left; i <= right; i++) {
                p(a[top][i]);
            }
            top++;
        }
        if (left <= right && right >= 0) {
            for (int j = top; j <= bottom; j++) {
                p(a[j][right]);
            }
            right--;
        }
        if (top <= bottom && bottom >= 0) {
            for (int m = right; m >= left; m--) {
                p(a[bottom][m]);
            }
            bottom--;
        }
        if (left <= right) {
            for (int n = bottom; n >= top; n--) {
                p(a[n][left]);
            }
            left++;
        }
        print();
    }
 
    public void p(int value) {
        if (count < length - 1) {
            System.out.print(value + " ");
        } else if (count == length - 1) {
            System.out.println(value + " ");
        }
        count++;
    }
 
    public static void main(String[] args) throws IOException {
        StreamTokenizer st = new StreamTokenizer(new BufferedReader(
                new InputStreamReader(System.in)));
        while (st.nextToken() != StreamTokenizer.TT_EOF) {
            int row = (int) st.nval;
            st.nextToken();
            int col = (int) st.nval;
            int[][] a = new int[row][col];
            for (int i = 0; i < row; i++) {
                for (int j = 0; j < col; j++) {
                    st.nextToken();
                    a[i][j] = (int) st.nval;
                }
            }
            Main m = new Main(row - 1, col - 1, a);
            m.print();
        }
    }
}
/**************************************************************
    Problem: 1391
    User: aqia358
    Language: Java
    Result: Time Limit Exceed
****************************************************************/







© 著作权归作者所有

共有 人打赏支持
aqia358
粉丝 6
博文 82
码字总数 30297
作品 0
海淀
程序员
私信 提问
[剑指offer] 顺时针打印矩阵

题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 则依次打印出数字. 解题思路 先得到矩阵的行和列数,然后依次旋转打印数据,一次旋转打...

繁著
06/29
0
0
剑指offer 19. 顺时针打印矩阵

原题 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,...

dby_freedom
10/21
0
0
python剑指offer66题

二维数组的查找 替换空格 从头到尾打印链表 重建二叉树 用两个栈实现队列 选择数组中的最小数字 斐波那契数列 跳台阶 变态跳台阶 矩形覆盖 二进制中1的个数 数值的整数次方 调整数组顺序使奇...

lyy0905
06/03
0
0
C算法编程题(五)“E”的变换

程序描述   给定7×7二维数组矩阵,元素由“0”或“1”组成,并且根据元素值屏幕显示“E”字形图案,其中“0”显示空格,“1”显示“@”。 如矩阵 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 ...

范大脚脚
2017/11/07
0
0
Android Camera&Matrix图像变换

Camera与Matrix Android UI系统中,Camera充当着相机的角色,无论是系统成像还是UI绘制。都离不开Camera。但是在Android系统中,存在两种Camera,一种是视觉成像的(拍照、摄像),另一种是图...

IamOkay
04/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Ubuntu16.04下安装docker

[TOC] 本文开发环境为Ubuntu 16.04 LTS 64位系统,通过apt的docker官方源安装最新的Docker CE(Community Edition),即Docker社区版,是开发人员和小型团队的理想选择。 1. 开始安装 1.1 由于...

豫华商
今天
10
0
使用XShell工具密钥认证登录Linux系统

如果你是一名Linux运维,那么Linux服务器的系统安全问题,可能是你要考虑的,而系统登录方式有两种,密码和密钥。哪一种更加安全呢? 无疑是后者! 这里我为大家分享用Xshell利器使用密钥的方...

dragon_tech
今天
8
0
day178-2018-12-15-英语流利阅读-待学习

“真蛛奶茶”了解一下?蜘蛛也会产奶了 Lala 2018-12-15 1.今日导读 “蛋白质含量是牛奶的 4 倍,并有着更低的脂肪和含糖量”,听起来诱人又美味的并不是羊奶或豆奶,而是你可能打死都想不到...

飞鱼说编程
今天
12
0
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents

场景重现 npm install --verbose 安装依赖的时,出现如下警告 强迫症患者表示不能接受 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):npm WARN......

taadis
今天
2
0
OSChina 周六乱弹 —— 你一口我一口多咬一口是小狗

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文 :分享Roy Orbison的单曲《She's a Mystery to Me》 《She's a Mystery to Me》- Roy Orbison 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
474
6

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部