[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 }
程序宅男