南阳oj 蛇形填数

#include<iostream>
using namespace std;
int main ()
{
int n,m,max;
cin>>n;
m=n;
max=n*n;
int count=1;
int s[105][105];
int x=1,y=n;
while(count<=max)
{
while(x<=m&&count<=max)
{
s[x][y]=count++;
x++;
}
y--;
x--;
while(y>=n-m+1&&count<=max)
{
s[x][y]=count++;
y--;

}
x--;
y++;
while(x>=n-m+1&&count<=max)
{
s[x][y]=count++;
x--;
}
y++;
x++;
m--;
while(y<=m&&count<=max)
{
s[x][y]=count++;
y++;
}
x++;
y--;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(j<n)
cout<<s[i][j]<<" ";
else if(j==n)
cout<<s[i][j]<<endl;
}
}
return 0;
}

蛇形填数,这次是自己做出来的,有一些技巧和规律

但是在处理循环次数的时候还是不熟练,不清晰。

等有时间看看大佬的代码学习一下。

猜你喜欢

转载自www.cnblogs.com/huanya/p/9351151.html