#include<bits/stdc++.h> using namespace std; int a[100][100],n,m; //x y表示要填充的下标,k表示要填充的值 void fun(int x,int y,int k){ a[x][y] = k; //按照顺时针:右、下、左、上,分别探测四个方向 //向右探测:右侧那个格子没有填值,且没有出方阵 if(a[x][y+1] == 0 && y+1<=m) fun(x,y+1,k+1); if(a[x+1][y] == 0 && x+1<=n) fun(x+1,y,k+1); if(a[x][y-1] == 0 && y-1>=1) fun(x,y-1,k+1); if(a[x-1][y] == 0 && x-1>=1) fun(x-1,y,k+1); } int main(){ int i,j; cin>>n>>m; //从1,1点开始,填充1 fun(1,1,1); //打印 for(i = 1;i <= n;i++){ for(j = 1;j <= m;j++){ cout<<setw(3)<<a[i][j]; } cout<<endl; } } /************************************************************** Problem: 1586 User: admin Language: C++ Result: Accepted Time:63 ms Memory:2112 kb ****************************************************************/