能帮忙看下我的DFS哪里有问题吗?
查看原帖
能帮忙看下我的DFS哪里有问题吗?
332549
幽灵特工楼主2020/9/15 18:21
#include <bits/stdc++.h>
using namespace std;
int move[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int ans=0;
int a1,a2,a3,a4;
int maps[5][9]={0};
struct point{
	int x;
	int y;
}n,now,next;
int visit[5][9]={0};
void DFS(point a){
	now.x=a.x;
	now.y=a.y;
	if(now.x==a1&&now.y==a2){
		ans++;
		return;
	}
	visit[a.x][a.y]=1;
	for(int i=0;i<4;i++){
		for(int j=0;j<2;j++){
			if(maps[now.x+move[i][j]][now.y+move[i][j]]==0&&visit[now.x+move[i][j]][now.y+move[i][j]]==0
				&&now.x+move[i][j]>=0&&now.x+move[i][j]<=4&&now.y+move[i][j]>=0&&now.y+move[i][j]<=9){
				next.x=now.x+move[i][j];
				next.y=now.y+move[i][j];
				DFS(next);
			}
		}
	}
}
queue <point> q;

int main(){
	cin>>a1>>a2>>a3>>a4;
	n.x=0;
	n.y=0;//起始位置 
	maps[a3][a4]=1;
	maps[a3-2][a4+1]=1;
	maps[a3-2][a4-1]=1;
	maps[a3-1][a4+2]=1;
	maps[a3-1][a4-2]=1;
	maps[a3+2][a4+1]=1;
	maps[a3+2][a4-1]=1;
	maps[a3+1][a4+2]=1;
	maps[a3+1][a4-2]=1;
	//记录不能走的坐标 
	DFS(n);
	cout<<ans;
}
2020/9/15 18:21
加载中...