首页 > 代码库 > 螺旋矩阵——正逆序
螺旋矩阵——正逆序
输入数字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"); }
螺旋矩阵——正逆序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。