欢迎光临散文网 会员登陆 & 注册

用来记笔记用的(笔记)

2023-09-11 13:52 作者:泽-吾愿之  | 我要投稿

#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数组 

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){//深度优先搜索 

if(sum==n*n){//递归出口,检查是否到了尽头 

return;

}

for(int i=1;i<=4;i++){//循环四个方向是否可走 

int tx=x+dx[i];//每个方向的新坐标 

int ty=y+dy[i];

if(a[tx][ty]==0&&check(tx,ty)){//判断是否可走 

sum++;//填新数 

a[tx][ty]=sum;

dfs(tx,ty);//继续按四方向规则探索 

}

}

}

int main() {//主程序

cin>>n;

a[n/2+1][n/2+1]=1;

dfs(n/2+1,n/2+1);

print();

return 0;

}


用来记笔记用的(笔记)的评论 (共 条)

分享到微博请遵守国家法律