嗯,不知道为啥,就想敲一下:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[50][50];
int main(){
memset(a,0,sizeof(a));
int m,n;
cin>>m>>n;
a[1][1]=1;
int j=1,i=1,cnt=1;
while(cnt < m*n){
while((j<n) && (!a[i][j+1])) a[i][++j]=++cnt;
while((i<m) && (!a[i+1][j])) a[++i][j]=++cnt;
while((j>1) && (!a[i][j-1])) a[i][--j]=++cnt;
while((i>1) && (!a[i-1][j])) a[--i][j]=++cnt;
}
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
printf("%4d",a[i][j]);
}
cout<<endl;
}
cin.get();
cin.get();
return 0;
}
这四个while循环,是这么来的: