一本通 2045 蛇形填數(shù)

#include<iostream>
using namespace std;
int a[21][21]={};
int main()
{
???????? int n;
???????? cin>>n;
???????? int x=1,y=n,cnt=1;
???????? a[x][y]=cnt;? ? ? //最右上角 填寫數(shù)字 1
while (cnt<n*n)
{
//從上到下? x +1? y 不變,測試下一個元素是否為 0? 且 x+1<=n
???????? while( x+1<=n && a[x+1][y]==0 ){
???????????????? x++;
???????????????? cnt++;
???????????????? a[x][y]=cnt;? ? ????
??????????? }
//從右到左 ? y-1? x?不變
???????? while( y-1>=1 && a[x][y-1]==0 ){
????????????????? y--;
???????????????? cnt++;
???????????????? a[x][y]=cnt;? ? ? ? ? ? ? ??
???????????}
???????//從下到上? x?-1? y 不變?
???????? while( x-1>=1 && a[x-1][y]==0 ){? ? ????
???????????????? x--;
???????????????? cnt++;
???????????????? a[x][y]=cnt;? ? ????????????
?????????}
????????//從左到右??y?+1? x?不變
???????? while( y+1<=n && a[x][y+1]==0 ){
????????? ? ???? y++;
???????????????? cnt++;
???????????????? a[x][y]=cnt;? ? ? ??
???????? }
}
for (int i=1;i<=n;i++)
{
???????? for (int j=1;j<=n;j++)? ? ????? cout<<a[i][j]<<" ";
???????? cout<<endl;
}
return 0;
}