筆記
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100][100],sum=1;?
int dx[5]={0,0,1,0,-1};//行?
int dy[5]={0,1,0,-1,0};//列
bool check(int x,int y){//檢查是否超界?
return x>0&&x<=n&&y>0&&y<=m;
}
void print(){//輸出a數(shù)組?
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<setw(3)<<a[i][j];?
}?
cout<<endl;
}
}
void dfs(int x,int y){//深度優(yōu)先搜索?
if(sum==n*m){//遞歸出口,檢查是否到了盡頭?
return;
}
for(int i=1;i<=4;i++){//循環(huán)四個(gè)方向是否可走?
int tx=x+dx[i];//每個(gè)方向的新坐標(biāo)?
int ty=y+dy[i];
if(a[tx][ty]==0&&check(tx,ty)){//判斷是否可走?
sum++;//填新數(shù)?
a[tx][ty]=sum;
dfs(tx,ty);//繼續(xù)按四方向規(guī)則探索?
}
}
}
int main() {//主程序
cin>>n>>m;
a[1][1]=1;
dfs(1,1);
print();
return 0;
}
標(biāo)簽: