文章
5
粉丝
100
获赞
2
访问
48.8k
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int flag[10][10];
int N, M, total, res;
int locX[4] = {1,-1,0,0};
int locY[4] = {0,0,1,-1};
void DFS(int n, int m, int cnt){
if(res == 1) return;
if(cnt == total){
res = 1;
return;
}
flag[n][m]++;
for(int i=0; i<4; i++){
int nowX = n+locX[i];
int nowY = m+locY[i];
if(nowX>=0 && nowX<N && nowY>=0 && nowY<M && flag[nowX][nowY]==0){
DFS(nowX, nowY, cnt+1);
}
}
flag[n][m] = 0;
}
int main(){
&nb...
登录后发布评论
在你的代码基础上改了一下,有的数据比较特殊
dfs回溯的时候flag需要重置