我把从1到9全测试了一下 答案没错 但是只有第四个对了 麻烦各位看看哪里出错了

P5731 【深基5.习6】蛇形方阵

@[fbexit](/user/361482) ``` for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { printf(" %2d ",a[i][j]); } printf("\n"); } ``` 每个数字间只有2个空格 改成 ```cpp for(i=1;i<=n;i++) { putchar(' ');//每行前都有一个空格 for(j=1;j<=n;j++) { printf("%2d ",a[i][j]);//每个数字间一个空格 } printf("\n"); } ```
by chyuya @ 2024-01-01 15:57:24


```cpp #include<bits/stdc++.h> using namespace std; int shuzu[10][10]; int main(){ int x,y,n,num=1; x=y=1; cin>>n; //cout<<"一开始的数组为:\n"; //for(int i=1;i<=n;i++){ // for(int j=1;j<=n;j++) cout<<shuzu[i][j]<<" "; // cout<<endl; //} while(num<=n*n){ while(y<=n&&shuzu[x][y]==0&&num<=n*n) { //cout<<endl<<"填数x="<<x<<"y="<<y; shuzu[x][y++]=num++; } y--;x++;//x=2,y=4; while(x<=n&&shuzu[x][y]==0&&num<=n*n){ //cout<<endl<<"填数x="<<x<<"y="<<y; shuzu[x++][y]=num++; } //cout<<endl<<"两次后的x y"<<x<<" "<<y<<endl; x--;y--; //cout<<endl<<"两次后的x y"<<x<<" "<<y<<endl; //x=4,y=3; while(y>=1&&shuzu[x][y]==0&&num<=n*n) { //cout<<endl<<"填数x="<<x<<"y="<<y; shuzu[x][y--]=num++; } y++;x--;//x=3,y=1; while(x>=1&&shuzu[x][y]==0&&num<=n*n) { //cout<<endl<<"填数x="<<x<<"y="<<y; shuzu[x--][y]=num++; } x++;y++; } // cout<<endl; // cout<<"改变n次后的数组: x为"<<x<<"y="<<y<<endl; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cout<<setw(3)<<shuzu[i][j]; cout<<endl; } return 0; } ```
by canwen2 @ 2024-04-05 12:53:51


|