写了一个蛇形方阵的代码,正解为:
#include<bits/stdc++.h>
using namespace std;
long long sz[1510][1510];
int main()
{
//蛇形方阵
int s[26][26],m,jsz=1,x,y;
cin>>m;
memset(s,0,sizeof(s));
x=0;
y=m-1;
s[x][y]=1;
for(;jsz<m*m;)
{
while(x+1<m&&!s[x+1][y])//向下写
s[++x][y]=++jsz;
while(y-1>=0&&!s[x][y-1])//向左写
s[x][--y]=++jsz;
while(x-1>=0&&!s[x-1][y])//向上写
s[--x][y]=++jsz;
while(y+1<m&&!s[x][y+1])//向右写
s[x][++y]=++jsz;
}
for(x=0;x<m;x++)
{
for(y=0;y<m;y++)
printf("%4d",s[x][y]);
printf("\n");
}
return 0;
}
但是如果在一开始定义x,y的时候就赋值,则虽然不会报错,结果会产生极大的误差,求问这种情况产生的原因。