递推递归练习--O(螺旋方阵)
来源:互联网 发布:摄像头美化软件 编辑:程序博客网 时间:2024/05/21 11:36
题目简述:
给定一数字,写出其螺旋矩阵,例如:
5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9.
解题思路:
用二维数组是肯定的了。
开始考虑用循环解决问题,但是考虑用循环会不会太麻烦,但是最后还是用了循环没有想到别的好办法。
用循环就是写出最外圈的程序,然后往里进行循环就是了。
源代码:
#include<iostream>using namespace std;int main(){ int t,n,r=1,i,j; while(cin>>t) { while(cin>>n) { int a[n+1][n+1]; int a1=1,b1=1,a2=n,b2=n,p=1; while(1) { for(j=a1;j<=a2;j++) { a[b1][j]=p; p++; if(p>n*n) break; } if(p>n*n) break; b1++; for(i=b1;i<=b2;i++) { a[i][a2]=p; p++; if(p>n*n) break; } if(p>n*n) break; a2--; for(j=a2;j>=a1;j--) { a[b2][j]=p; p++; if(p>n*n) break; } if(p>n*n) break; b2--; for(i=b2;i>=b1;i--) { a[i][a1]=p; p++; if(p>n*n) break; } if(p>n*n) break; a1++; } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(j==n&&i!=n) cout<<a[i][j]<<endl; else if(j==n&&i==n) cout<<a[i][j]<<endl<<endl; else cout<<a[i][j]<<'\t'; } } if(r==t) break; r++; } } return 0;}
0 0
- 递推递归练习 O 螺旋方阵
- 递推递归练习O螺旋方阵
- 递推递归练习--O(螺旋方阵)
- 递推递归专题 O 螺旋方阵
- 递归递推之螺旋方阵
- 递推递归练习O
- 递推递归练习 O
- 递推递归练习 O
- 递推递归练习O
- 递推递归练习 中的O题
- 递推递归练习 O题
- ACM递归递推练习 Problem O
- 递推递归练习——O
- 螺旋方阵(递归)
- 螺旋方阵——递归
- SDUT 2254 字母螺旋方阵(递归)
- 递推递归练习 A
- 递推递归练习 B
- 马的移动
- hdu 1533 Going Home 【最小权的二分图匹配】
- ndnsim下转发策略的研究以及架构
- Docker学习之路
- 跳跃游戏
- 递推递归练习--O(螺旋方阵)
- 递推递归练习P
- 蓝桥杯-基础试题-试笔-01字串
- 手把手git教程(05)--远程仓库推送和克隆
- Android使用谷歌封装好的api增删查改
- java类型自动装箱拆箱和字符串与基本类型的装换
- 【GDOI2017模拟一试4.11】腐女的生日(线段树+维护一次函数)
- 部署应用到Tomcat服务器
- BZOJ 3809: Gty的二逼妹子序列