标签:cin 螺旋矩阵 amp end 矩阵 div names 技术 oid
输入数字N,输出大小为N*N的螺旋矩阵
#include<iostream> using namespace std; void Spiral_Matrix1(int N,int **r){//正序输出 int k=N;int sum=1; while(k>0){ int m=(N-k)/2; int i=m,j=m; if(k==1){ //奇数情况下 r[m][m]=sum; break; } for(int n=sum;n<sum+4*(k-1);n++){ if((i==m)&&(j>=m&&j<m+k-1)){ r[i][j]=n; j++; } else if((i>=m&&i<m+k-1)&&(j==m+k-1)){ r[i][j]=n; i++; } else if((i==m+k-1)&&(j>m&&j<=m+k-1)){ r[i][j]=n; j--; } else if((i>m&&i<=m+k-1)&&(j==m)){ r[i][j]=n; i--; } } sum+=4*(k-1); k-=2; } for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ cout<<r[i][j]<<‘ ‘; } cout<<endl; } } void Spiral_Matrix2(int N,int **r){//逆序输出 int k=N;int res=N*N; while(k>0){ int m=(N-k)/2; int i=m,j=m; if(k==1){ //奇数情况下 r[m][m]=1; break; } for(int n=res;n>res-4*(k-1);n--){ if((i==m)&&(j>=m&&j<m+k-1)){ r[i][j]=n; j++; } else if((i>=m&&i<m+k-1)&&(j==m+k-1)){ r[i][j]=n; i++; } else if((i==m+k-1)&&(j>m&&j<=m+k-1)){ r[i][j]=n; j--; } else if((i>m&&i<=m+k-1)&&(j==m)){ r[i][j]=n; i--; } } res-=4*(k-1); k-=2; } for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ cout<<r[i][j]<<‘ ‘; } cout<<endl; } } void main(){ int N; cin>>N; int **p; p=new int*[N]; for(int i=0;i<N;i++){ p[i]=new int [N]; } Spiral_Matrix1(N,p); cout<<endl; Spiral_Matrix2(N,p); for(int i=0;i<N;i++){ delete [] p[i]; } delete [] p; system("pause"); }
标签:cin 螺旋矩阵 amp end 矩阵 div names 技术 oid
原文地址:http://www.cnblogs.com/liguangsunls/p/6905841.html