在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方阵为:10 11 12 19 16 13 28 15 14 37 6 5 4
输入
直接输入方阵的维数,即n的值。(n<=100)
输出
输出结果是蛇形方阵。
样例输入
3
样例输出
7 8 1
6 9 2
5 4 3
这里我为了好看对格式做了处理,并改成了多组输入,提交肯不过呀
#include#include using namespace std;int main(){ int n; int a[101][101]; while(cin>>n) { int M=0,N=n-1; //在主对角线左上和右下设立标志 int x; //行坐标 int y; //列坐标 int i=1,j; while(i =M; y--) { a[x][y]=i++; } y++; for(x=N; x>=M; x--) { a[x][y]=i++; } x++; M++; //左上方标志向右下趋近一位 for(y=M; y<=N; y++) { a[x][y]=i++; } y--; } if(n%2) a[M][N]=i; for(int i=0; i
更新,看了别人的代码,感觉自己的好乱
下面是根据别人代码改进的
#includeusing namespace std;int main(){ int n; int a[101][101]; while(cin>>n) { int circle=0; int k=1; int i=0; int j=n-1; while(k<=n*n) { for (; i =circle; j--) { a[i][j]=k++; } j++; for (i-=1; i>=circle; i--) { a[i][j]=k++; } i++; circle++; for (j+=1; j