AcWing 756. 蛇形矩阵
原题链接
简单
作者:
内海
,
2025-01-06 15:17:37
,
所有人可见
,
阅读 1
#include <iostream>
using namespace std;
int m,n,j,k,flag;
int q[110][110]={};
int main(){
scanf("%d %d",&n,&m);
for(int i=0;i<110;i++){
for(int j=0;j<110;j++){
q[i][j]=-1;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
q[i][j]=0;
}
}
int i=1,j=1,k=1,flag=1;
while(i<=m*n-1){
if (flag==1){
if(k>m||q[j][k+1]!=0) {flag=2;continue;}
q[j][k]=i;i++;k++;
}
if (flag==2){
if(j>n+1||q[j+1][k]!=0) {flag=3;continue;}
q[j][k]=i;i++;j++;
}
if (flag==3){
if(k<=0||q[j][k-1]!=0) {flag=4;continue;}
q[j][k]=i;i++;k--;
}
if (flag==4){
if(j<=0||q[j-1][k]!=0) {flag=1;continue;}
q[j][k]=i;i++;j--;
}
}
q[j][k]=i;
for(int i=1;i<n+1;i++){
for(int j=1;j<m+1;j++){
printf("%d ",q[i][j]);
}
printf("\n");
}
}