特殊矩阵的处理方法
#include<iostream> #include<algorithm> #include<vector> using namespace std; const int N=100; bool st[N][N]; int res[N][N],n,m; int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; int main(void){ cin>>n>>m; for(int i=1,d=0,x=0,y=0;i<=n*m;i++){ int a=x+dx[d],b=y+dy[d]; if(a<0||a>=n||b<0||b>=m||res[a][b]){ d=(d+1)%4; a=x+dx[d],b=y+dy[d]; } res[x][y]=i; x=a,y=b; } for(int i=0;i<n;i++){ for(int j=0;j<m;j++)cout<<res[i][j]<<' '; cout<<endl; } return 0; }
#include<iostream> #include<algorithm> #include<vector> using namespace std; const int N=100; int res[N][N],n,m; int main(void){ cin>>n>>m; for(int i=0,k=1;i<n+m-1;i++){ int x=i,y=0,d=-1; if(i%2==1)y=i,x=0,d=1; for(int j=0;j<=i;j++,x+=d,y-=d){ if(x>=0&&x<n&&y>=0&&y<m) res[x][y]=k++; } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++)cout<<res[i][j]<<' '; cout<<endl; } return 0; }