筆記2
#include<bits/stdc++.h>
using namespace std;//開辟存儲空間
int n,a[100][100],sum=1;?
int dx[5]={0,-1,0,1,0};//x方向變化?
int dy[5]={0,0,1,0,-1};//y方向變化
bool check(int x,int y){//檢查是否超界?
return x>0&&x<=n&&y>0&&y<=n;
}
void print(){//輸出a數(shù)組?
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<a[i][j]<<" ";?
}?
cout<<endl;
}
}
void dfs(int x,int y){//深度優(yōu)先搜索?
if(sum==n*n){//遞歸出口,檢查是否到了盡頭?
return;
}
for(int i=1;i<=4;i++){//循環(huán)四個方向是否可走?
int tx=x+dx[i];//每個方向的新坐標(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;
a[n/2+1][n/2+1]=1;
dfs(n/2+1,n/2+1);
print();
return 0;
}
標(biāo)簽: