~~直接上代码,以后也便于自己查看~
代码写的不太好看(代码有点多),但基本思路和做法应该是比较简单和直接的~
- 螺旋数组
//螺旋数组 #include<iostream> using namespace std; int main(){ int n; cin>>n; int **jz = new int *[n+1]; for(int i=0 ; i<n+1 ; i++){ jz[i] = new int [n+1]; } int cen = 0; int mid = 1; int i = 0; int j = 0; while(mid<=n*n){ for(i=cen;i<n-cen; i++){ jz[cen][i] = mid; mid++; } for(j=cen+1 ; j<n-cen ; j++ ){ jz[j][i-1] = mid; mid++; } for(i=i-2 ; i>=cen ; i--){ jz[j-1][i] = mid; mid++; }//i = 0 j = 5 for(j=j-2 ; j>cen ; j--){ jz[j][i+1] = mid; mid++; } cen++; } for(int m=0 ; m<n ; m++){ for(int x=0 ; x<n ; x++){ cout<<jz[m][x]<<"\t"; } cout<<endl; } for(int m=0 ; m<n ; m++){ delete [] jz[m]; } delete []jz; return 0; }
- 蛇形数组
//蛇形数组 #include <iostream> using namespace std; int main(){ int N; cin>>N; int **arr = new int *[N]; for(int i=0 ; i<N ; i++){ arr[i] = new int [N]; } int mid =1; int cen = 0; int ken = 0; int m=0; int n=0; arr[0][0] = 1; while(mid<N*N){ if(n+1<N){ n++; mid++; arr[m][n] = mid; } else{ m++; mid++; arr[m][n] = mid; } while(n>cen&&m<N-1){ m++; n--; mid++; arr[m][n] = mid; if(m == N-1)cen++; }//n == 0 if(m+1<N){ m++; mid++; arr[m][n] = mid; } else{ n++; mid++; arr[m][n] = mid; } while(m>ken&&n<N-1){ m--; n++; mid++; arr[m][n] = mid; if(n == N-1)ken++; } } for(int i=0 ; i<N ; i++){ for(int j=0 ; j<N ; j++){ cout<<"\t"<<arr[i][j]; } cout<<endl<<endl; } for(int i=0 ; i<N ; i++){ delete []arr[i]; } delete []arr; return 0; }