problem.php?id=1044
来源:互联网 发布:自己印t恤 知乎 编辑:程序博客网 时间:2024/05/26 17:48
问题 1044. – 数圈
1044: 数圈
时间限制: 1 Sec 内存限制: 128 MB提交: 243 解决: 105
[提交][状态][讨论版]
题目描述
以1为中心,用2,3,4, …, n, …, n*n的数字围绕着中心输出数圈, 如若n=4,则
7 8 9 10
6 1 2 11
5 4 3 12
16 15 14 13
输入
一个整数n(1<=n<=10)
输出
数圈矩阵
样例输入
5
样例输出
21 22 23 24 2520 7 8 9 1019 6 1 2 1118 5 4 3 1217 16 15 14 13
提示
来源
解决方法:
以下是我写的代码。
#include <iostream>#include <cmath>#include <cstdio>using namespace std;const int N=20;int main(){ int n,i,j,tp,ts,tw,flag; cin>>n; int a[N][N],cnt=1; for(i=0;i<N;i++) for(j=0;j<N;j++) a[i][j]=0; a[N/2][N/2]=1; i=N/2;j=N/2; while(cnt!=n*n) { tp=(int)sqrt(cnt); if(tp*tp==cnt)// 1,4,9,16这些值对应的坐标 { ts=cnt; tw=tp; if(tp%2!=0) //若为奇数,则向右移动 { a[i][j+1]=cnt+1; j=j+1; flag=4; } else//否则向左移动 { a[i][j-1]=cnt+1; j=j-1; flag=3; } } else if(ts+1==cnt)//若为上述点后的第一个点 { if(tw%2==0)//为偶数则向上移动 { a[i-1][j]=cnt+1; i=i-1; flag=1; } else//否则向下移动 { a[i+1][j]=cnt+1; i=i+1; flag=2; } } else if(cnt==(tw+1)*(tw+1)-tw)//若为靠近下一个平方点的四边顶点 { if((tw+1)%2==0)//若下一个平方点开方为偶数,则向左移动 { a[i][j-1]=cnt+1; j=j-1; flag=3; } else//否则向右移动 { a[i][j+1]=cnt+1; j=j+1; flag=4; } } else//处理非四周顶点情况 { if(flag==1)//若上一个点是向上移动,则继续向上移动 { a[i-1][j]=cnt+1; i=i-1; } else if(flag==2) //若上一个点是向下移动,则继续向下移动 { a[i+1][j]=cnt+1; i=i+1; } else if(flag==3)//若上一个点是向左移动,则继续向左移动 { a[i][j-1]=cnt+1; j=j-1; } else //若上一个点是向右移动,则继续向右移动 { a[i][j+1]=cnt+1; j=j+1; } } cnt++; } bool qp=false; for(i=0;i<N;i++) { if(qp) break; for(j=0;j<N;j++) if(a[i][j]!=0) { ts=i; tw=j; qp=true; break; } } for(i=0;i<n;i++) { for(j=0;j<n-1;j++) { cout<<a[ts+i][tw+j]<<" "; } cout<<a[ts+i][tw+n-1]<<endl; } return 0;}
0 0
- problem.php?id=1044
- problem?id=3211
- problem?id=3211
- http://acm.upc.edu.cn/problem.php?id=2174 无限悲哀中.....
- http://211.67.33.62/JudgeOnline/problem.php?id=1014,排序二叉树
- 欧拉定理http://acm.fjnu.edu.cn/problem.php?id=1085
- Zju1290 Word-Search Wonder(http://begin.lydsy.com/JudgeOnline/problem.php?id=2768)
- http://begin.lydsy.com/JudgeOnline/problem.php?id=2770(PKU2503 Babelfish)
- http://begin.lydsy.com/JudgeOnline/problem.php?id=2774(poi病毒)
- 溢出(http://www.gdutcode.sinaapp.com/problem.php?id=1190)
- http://poj.org/problem?id=2965
- http://poj.org/problem?id=2075
- http://poj.org/problem?id=1125
- http://poj.org/problem?id=2983
- http://poj.org/problem?id=2406
- http://poj.org/problem?id=1961
- http://poj.org/problem?id=1486
- http://poj.org/problem?id=1062
- AOE网上的关键路径
- 计时程序
- 3066. 【NOIP2012模拟10.29晚】麻将 (Standard IO)
- 关于android studio Error:Could not read cache value from '/Users......问题
- 面向对象与面向过程的区别
- problem.php?id=1044
- FreeRTOS的优先级相关说明
- 前端速学成财:第十课-混合篇:webpack和gulp"勾结"初步
- 数据结构13.二叉搜索树 BST
- Git 命令总结
- 【NOI2016】bzoj4653 区间
- 初识python(三)
- SDUT1028Catch That Cow
- Cow Tour_usaco2.4.3_floyd