求助,自己运行的时候对的很,进来却是0分啊

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

输出换成%2d也不对捏
by zKT239 @ 2024-04-11 21:08:18


```cpp #include <stdio.h> int main() { int n; scanf("%d", &n); int a[n][n]; int op = 1; int top=0,di=n-1,z=0,y=n-1; while (op<=n*n) { for(int j=z;j<=y;j++) a[top][j] = op++; top++; for (int i=top;i<=di;i++) a[i][y] = op++; y--; for (int j=y;j>=z;j--) a[di][j] = op++; di--; for (int i=di;i>=top;i--) a[i][z] = op++; z++; } for (int i=0;i<n;i++) { for (int j=0;j<n;j++) { if(a[i][j] < 10) {//判断要占用几个空格 printf(" %d",a[i][j]); } else { printf(" %d",a[i][j]); } } printf("\n"); } return 0; } ```
by iamsh @ 2024-04-11 21:26:17


@[zKT239](/user/1068201) 要换成%3d……题目说了每个数占用3个空格。
by lpx0228 @ 2024-04-27 11:29:15


@[lpx0228](/user/1273463) 好滴,感谢
by zKT239 @ 2024-05-02 14:56:37


```cpp #include<bits/stdc++.h> using namespace std; long long a[10][10]; int main(){ long long dx[4]={0,1,0,-1}; long long dy[4]={1,0,-1,0}; long long i,j,n,num,d; cin>>n; for(i=0;i<=n+1;i++){ for(j=0;j<=n+1;j++){ a[i][j]=-1; } } for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ a[i][j]=0; } } i=1; j=1; d=0; for(num=1;num<=n*n;num++){ a[i][j]=num; if(a[i+dx[d]][j+dy[d]]!=0){ d=(d+1)%4; } i+=dx[d]; j+=dy[d]; } for(i=1;i<=n;i++){ for(j=1;j<=n;j++){ cout.width(3); cout<<a[i][j]; } cout<<"\n"; } } ``` 试试 ~~sqlm~~
by E303 @ 2024-05-06 21:35:31


|