python输出蛇形矩阵,c蛇形矩阵
问题描述
给定一个m行n列的mn矩阵,程序以螺旋顺序输出矩阵中的所有元素。
投入
有多个矩阵。
每个矩阵数据的第一行有两个整数M和N,后面是一个mxn矩阵的描述,有M行,每行有N个整数。
输出
对于每个矩阵数据,矩阵数组的元素以螺旋顺序输出。
输入样本
3 3
1 2 3
4 5 6
7 8 9
输出样本
1 2 3 6 9 8 7 4 5
思路:按照题意模拟就好。见代码,时间复杂度O(mn),每个点访问一次。
#includebits/stdc。使用命名空间标准;const int maxn=500int a[maxn][maxn];bool vis[maxn][maxn];//标记数组int main(){ int m,n;while(CIN m n){ for(int I=0;我是m;I){ for(int j=0;j n;j){ CIN a[I][j];vis[I][j]=0;} } int x=0,y=0;printf(%d ,a[x][y]);//第一点特殊处理vis[x][y]=1;int sum=m * n,tot=1;//总点数和当前已经输出的点数while(tot sum){ while(y ^ 1n!Vis[x][y 1]){ //一条固定直线向左遍历TOT,vis[x][y]=1;printf( %d ,a[x][y]);} while(x 1 m!Vis[x 1][y]){ //固定列向下遍历TOT,vis[x][y]=1;printf( %d ,a[x][y]);} while(y - 1=0!Vis[x][y-1]){ //一条固定的直线向右遍历tot,vis[x][-y]=1;printf( %d ,a[x][y]);} while(x - 1=0!Vis[x-1][y]){ //固定列向上遍历TOT,vis[-x][y]=1;printf( %d ,a[x][y]);} } putchar( \ n );}返回0;}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。