打印螺旋矩阵
2015-11-13 15:05
253 查看
输入N,打印一个N*N的矩阵,规律就是从首坐标开始一次增大
比如N=4;打印
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
对于这个问题的解决我给出了下面两种方法:
程序运行结果如下:
比如N=4;打印
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
对于这个问题的解决我给出了下面两种方法:
#define M 10 int s[M][M]; void fun1(int N) { int k=0,i=0,j=0; int a=1; for(;k<(N+1)/2;k++) //k表示第几圈 { while(j<N-k) s[i][j++]=a++; i++; j--; while(i<N-k) s[i++][j]=a++; i--; j--; while(j>k-1) s[i][j--]=a++; i--; j++; while(i>k) s[i--][j]=a++; i++; j++; } for(i=0;i<N;i++) { for(j=0;j<N;j++) cout<<s[i][j]<<'\t'; cout<<endl; } } void fun2(int n) { int m=1,i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) s[i][j]=0; for(i=0;i<(n+1)/2;i++) { for(j=0;j<n-i;j++) { if(s[i][j]==0) s[i][j]=m++; } for(j=i+1;j<n-i;j++) { if(s[j][n-1-i]==0) s[j][n-1-i]=m++; } for(j=n-i-1;j>i;j--) { if(s[n-1-i][j]==0) s[n-1-i][j]=m++; } for(j=n-i-1;j>i;j--) { if(s[j][i]==0) s[j][i]=m++; } } for(i=0;i<n;i++) { for(j=0;j<n;j++) cout<<s[i][j]<<'\t'; cout<<endl; } } void main() { int n; cin>>n; fun1(n); cout<<endl; fun2(n); }
程序运行结果如下:
相关文章推荐
- centos6.5内核2.6升级至3.X
- Linux 下安装mysql两种方法
- Xcode7 *** does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_
- 自定义javascript弹窗
- 信号量互斥编程
- 产生sql语句的vba
- Java集合---HashMap源码剖析
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- 我的第一篇博客
- VMwareworkstation 11安装 mac os x教程
- NFS服务器的搭建
- Extjs之Grid详细
- C++ 之 Excel文件读写 之 简便方法
- HTML布局----div布局&&table
- iOS通知NSNotification传值的使用
- 超常用的PHP正则表达式收集整理
- git show/diff 界面操作
- Java编程思想_笔记(八)
- linux中的openoffice服务终止运行
- android Material Design之 ToolBar+TabLayout+recycleView的效果实现