[C++]蛇形填数

[从左下角开始,逆时针蛇形填数]

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int main() {
 5     int n;
 6     cin>>n;
 7     int **p=new int*[n];
 8     for(int i=0;i<n;i++)
 9     {
10         p[i]=new int[n];
11         for(int j=0;j<n;j++)
12             p[i][j]=0;
13     }
14     
15     int x,y;
16     int total=p[x=n-1][y=0]=1;
17     
18     while(total<n*n)
19     {
20         while(y+1<n&&!p[x][y+1])p[x][++y]=++total;
21         while(x-1>=0&&!p[x-1][y])p[--x][y]=++total;
22         while(y-1>=0&&!p[x][y-1])p[x][--y]=++total;
23         while(x+1<n&&!p[x+1][y])p[++x][y]=++total;
24     }
25     
26     for(int i=0;i<n;i++)
27     {
28         for(int j=0;j<n;j++)
29             cout<<p[i][j]<<"\t";    
30         cout<<endl;
31     }
32         
33     return 0;
34 }

 

posted @ 2019-12-07 00:31  时光潜流  阅读(1037)  评论(0编辑  收藏  举报