/* C++奋斗乐园|C++论坛|算法论坛|ACM/ICPC论坛 82 81 80 79 78 77 76 75 74 73 83 50 49 48 47 46 45 44 43 72 84 51 26 25 24 23 22 21 42 71 85 52 27 10 9 8 7 20 41 70 86 53 28 11 2 1 6 19 40 69 87 54 29 12 3 4 5 18 39 68 88 55 30 13 14 15 16 17 38 67 89 56 31 32 33 34 35 36 37 66 90 57 58 59 60 61 62 63 64 65 91 92 93 94 95 96 97 98 99 100*/ //看到这个方阵,一想到的就是找规律。这个题目规律只有两个 转圈 自加 //转圈就要给数组元素定位,主要做的工作就是找规律然后根据规律用for简化,然后再赋值。 //如果把一圈当作一个循环的话,那整体循环N/2次 #include <iostream> using namespace std; int main() { const int N=10;//这个就不说了 //先建立一个二维数组 int a[N][N]; //为了观察运行出的错,先把数组各个元素通通赋为0吧,这样一来,有什么错误在运行时候,一看就能看出来。 for(int i=0;i<N;i++) for(int j=0;j<N;j++) { a[i][j]=0; } //试了一下从1赋值,感觉很费事,还是从后往前推吧,最后一个数字是N*N int last=N*N; int n=N; //中间变量。 int i=n-1,j;//第一个循环要用到i(第54行),所以赋个初值 for(int k=0;k<N/2;k++)//如果把一圈当作一个循环的话,那整体循环N/2次 { for(j=n-1;j>k;j--)//给100-92赋值 a[i][j]=last--; for(i=n-1;i>k;i--)//给91-83赋值 a[i][j]=last--; for(;j<n-1;j++) //给82-74赋值 a[i][j]=last--; for(;i<n-1;i++) //给73-65 a[i][j]=last--; //最外面的一圈赋值完成了,进行下一圈。 n--;i--; } //显示数组各个元素 for(int i=0;i<N;i++) for(int j=0;j<N;j++) { cout<<a[i][j]<<"\t"; if(j==N-1) //这要注意换行。 cout<<endl<<endl; } return 0; }
螺旋阵列
转载本人新博客网址为:http://www.hizds.com
本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段。c++/lua/windows逆向交流群:69148232
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
下一篇:Quartz入门到精通
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
螺旋数组
问题描述eg: 输入 3 输出 1 2 3 8 9 4 7`6 5 import java.util.Scanner; class Main02{ public
class java 螺旋数组 i++ 表示层 -
螺旋模型
死锁
螺旋模型 迭代 风险分析 软件开发 开发过程 -
螺旋矩阵实现
#include <iostream>#includ
#include ios i++