打印螺旋矩阵
来源:互联网 发布:淘宝宝贝卖点怎么写? 编辑:程序博客网 时间:2024/05/18 20:48
输入N,打印一个N*N的矩阵,规律就是从首坐标开始一次增大
比如N=4;打印
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
对于这个问题的解决我给出了下面两种方法:
#define M 10int 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);}
程序运行结果如下:
0 0
- 螺旋矩阵的打印
- 打印螺旋矩阵
- 打印螺旋矩阵
- 打印螺旋矩阵
- 打印螺旋矩阵
- 螺旋打印数字矩阵
- 打印螺旋矩阵
- 打印螺旋矩阵
- 打印螺旋数字矩阵
- [笔试] 打印螺旋矩阵
- 打印螺旋矩阵
- 打印螺旋矩阵
- 螺旋打印数字矩阵
- 打印螺旋矩阵
- 打印螺旋矩阵
- Python-打印螺旋矩阵
- 螺旋矩阵顺时针打印
- 打印螺旋矩阵
- Java集合---HashMap源码剖析
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- 指定构造器和便捷构造器
- ApacheBench命令测试web服务器
- JAVA编程思想_笔记(九)
- 打印螺旋矩阵
- ant 生成war包 例子及项目结构
- 硅谷跳槽必备
- eclipse 启动报错设置
- Xcode7 *** does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_
- linux epoll TCP UDP 实例
- Linux 下安装mysql两种方法
- ROS_11.13_turtlebot_navigation
- 自定义javascript弹窗