矩阵螺旋输出:

给定一个 m行、n列的矩阵,请按照顺时针螺旋的顺序输出矩阵中所有的元素(从[0][0]位置开始,具体请参见下图)。

输入格式

测评机会反复运行你写的程序。每次程序运行时,首先在第一行输入 2 个整数,分别对应题目描述中的 m 和 n,之间用一个空格分隔。接下来输入 m行,每行包含 n 个整数,每两个整数之间用一个空格分隔。

输出格式

输出为一行,包括 m×n 个整数,按照题目要求的顺序依次输出所有矩阵元素,任意两个整数之间用一个空格分隔,最后一个整数后面没有空格。

样例输入1

2 3
1 2 3
3 4 6

样例输出1

1 2 3 6 4 3

样例输入2

3 2
1 2
3 4
5 6

样例输出2

1 2 4 6 5 3
 1 #include <iostream>
 2 using namespace std;
 3
 4 int main() {
 5     int matrix[100][100];
 6     int m;
 7     int n;
 8     int l = 1, i, j, k;
 9     cin >> m >> n;
10     for (i = 0; i<m; i++) {
11         for (j = 0; j<n; j++) {
12             cin >> matrix[i][j];
13         }
14     }
15     k = 0;
16     i = 0;
17     j = 0;
18     for (;;) {
19
20         for (; j<n - i; j++) {
21             cout << matrix[i][j];
22             k++;
23             if (k == m*n)
24                 break;
25             else
26                 cout<<" ";
27             if (j == n - i - 1) {
28                 i++;
29                 l = 2;
30                 break;
31             }
32         }
33         if (k == m*n)
34             break;
35
36         for (; i<m - n + 1 + j; i++) {
37             cout << matrix[i][j] ;
38             k++;
39             if (k == m*n)
40                 break;
41             else
42                 cout<<" ";
43             if (i == m - n + j) {
44                 j--;
45                 l = 3;
46                 break;
47             }
48         }
49         if (k == m*n)
50             break;
51         for (; j >= m - 1 - i; j--) {
52             cout << matrix[i][j] ;
53             k++;
54             if (k == m*n)
55                 break;
56             else
57                 cout<<" ";
58             if (j == m - i-1) {
59                 i--;
60                 l = 4;
61                 break;
62             }
63         }
64         if (k == m*n)
65             break;
66         for (; i>j; i--) {
67             cout << matrix[i][j];
68             k++;
69             if (k == m*n)
70                 break;
71             else
72                 cout<<" ";
73             if (i == j + 1) {
74                 j++;
75                 l = 1;
76                 break;
77             }
78         }
79
80         if (k == m*n)
81             break;
82     }
83     return 0;
84 }
时间: 2024-10-05 04:19:46

矩阵螺旋输出:的相关文章

LeetCode:Spiral Matrix - 螺旋输出矩阵中的元素

1.题目名称 Spiral Matrix(螺旋输出矩阵中的元素) 2.题目地址 https://leetcode.com/problems/spiral-matrix/ 3.题目内容 英文:Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. 中文:给出一个m行n列的矩阵,以螺旋顺序返回矩阵中的所有元素. 例如:现有矩阵如下: [  [ 1,

螺旋输出一组数组数据的实现

要螺旋输出一组数据,实现的解决方案:采用二维数组的形式来解决 结果如下: 实现如下: 这里我们定义一个类      public class LoopSort{         public static void main(String[] args){                //要螺旋输出的数据的个数             Scanner s=new Scanner(System.in);             System.out.println("请输入螺旋输出的数据的行和列

矩阵顺时针螺旋输出2种不同的方法。

第一种解法: package com.zhm; /**  * Created by zhm on 2015/6/27.  * 1 2 3  * 4 5 6  * 7 8 9  * 上面的矩阵按照顺时针输出:1,2,3,6,9,8,7,4,5  * 递归+起止判断实现.  */ public class JuzhenPrint {     /**      * 初始化数组矩阵      * @param length      * @return      */     public int[][

[C++]LeetCode: 110 Spiral Matrix (螺旋输出矩阵元素)

题目: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. For example, Given the following matrix: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] You should return [1,2,3,6,9,8,7,4,5]. 思路:我们来自己画一个螺旋线的行走轨迹

PHP实现螺旋矩阵(螺旋数组)

今天碰到一个比较有意思的问题, 就是把A到Y这25个字母以下面的形式输出出来 A B C D E P Q R S F O X Y T G N W V U H M L K J I 问题很有意思,就是转圈圈把字母填到表格中,要输出这样的格式,其实就需要构造一个下面这样的表格 1 2 3 4 5 16 17 18 18 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 这其实是一个螺旋矩阵的问题, 这跟下面这个问题本质是一样的: 给定一个行数row和列数cols,

C语言-对字符串二维数组各个元素进行比较-十进制数转化为其他进制数-进行规则矩阵的输出-190225

//编写一个函数:从传入的num个字符中找到最长的一个字符,并通过max传回该串地址. //重点:切记这里a[0]就是一个地址. 1 #include<conio.h> 2 #include<stdio.h> 3 #include<string.h> 4 #include<stdlib.h> 5 6 char *fun(char (*a)[81], int num, char *max) 7 { 8 max = a[0];//切记这里a[0]就是一个地址.

矩阵螺旋遍历Spiral Matrix,Spiral Matrix2

SpiralMatrix: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. For example,Given the following matrix: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] You should return [1,2,3,6,9,8,7,4,5]. 算法分析:其实就是两

LeetCode:Spiral Matrix II - 将元素1-n^2以螺旋序填充到矩阵

1.题目名称 Spiral Matrix(螺旋输出矩阵中的元素) 2.题目地址 https://leetcode.com/problems/spiral-matrix-ii/ 3.题目内容 英文:Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. 中文:给出一个整数n,生成一个矩阵,使用数字1到n^2以螺旋顺序填充这个矩阵 例如:给出n=3,则生成如下矩阵:

[NOIP2014普及组]螺旋矩阵

题目地址: ayyzvijos:http://pingce.ayyz.cn/vijos/Problem_Show.asp?id=2017 vijos:https://vijos.org/p/1913 COGS:http://218.28.19.228/cogs/problem/problem.php?pid=1811 题目来源:NOIP2014普及组第三题 问题分析:这道题的内容很易懂,而且容易实现,即直接构造出一个螺旋矩阵,输出对应位置即可.这样的方法大概可以过掉50%的数据.但是,对于100