描述
一个n行n列的螺旋方阵按如下方法生成:从方阵的左下角(第n行第1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则左转。重复上述操作直至经过方阵中所有格子。根据经过顺序,在格子中依次填入1,2,3,…,n,便构成了一个螺旋方阵。下面是个n=4的螺旋方阵。
编程输入一个正整数n,生成一个n×n的螺旋方阵
输入
一行一个正整数n,1≤n≤20。
输出
共n行,每行n个正整数,每个正整数占5列。
分析:
啊啊啊,非常简单啊!
就是循环出错检查费脑子!
解法:
是人就知道啊!
代码来啦!
#include <iostream> #include <cstdio> using namespace std; int main() { int n; int a[101][101]; cin>>n; int m=0; int k=1,l=n; while(k<=l)//从1-1到n-n { for(int i = k;i <= l;i++) a[l][i]=++m;//超级费脑子的循环 for(int i = l-1;i >= k;i--) a[i][l]=++m; for(int i = l-1;i >= k;i--) a[k][i]=++m; for(int i = k+1;i < l;i++) a[i][k]=++m; k++,l--; } for(int i = 1;i <= n;i++) { for(int j = 1;j <= n;j++) { printf("%5d",a[i][j]);//不是C++的用不起,而是C的更有性价比 } cout<<endl; } return 0; }
啊哈哈哈哈(此人错了10000万次排错成功后的喜悦)
速速上小星星和关注!