求助,想直接深搜,不知道问题在哪,样例也没过,哪位大神帮帮忙
查看原帖
求助,想直接深搜,不知道问题在哪,样例也没过,哪位大神帮帮忙
365153
Pavilion。。楼主2020/8/16 14:34
#include <iostream>
#include <cstring>
using namespace std;
int bx,by,hx,hy;
int count=0,count1=0;
int f[1000][1000]={0};
int xx[2]={1,0},yy[2]={0,1};
int ax[10]={0,1,1,-1,-1,2,2,-2,-2},ay[10]={0,2,-2,2,-2,1,-1,1,-1};
void dfs(int x,int y){
	if(x==bx&&y==by){
		count++;
		return ;
	}
	for(int i=0; i<2; i++){
		int Ax=x+xx[i], Ay=y+yy[i];
		count1=0;
		for(int j=0; j<=8; j++){
			int Hx=hx+ax[i],Hy=hy+ay[i];
			if(Ax!=Hx&&Ay!=Hy){
				count1++;
			}
			else break;
		}
		if(Ax<=bx&&Ay<=by&&!f[Ax][Ay]&&count1==9){
			f[Ax][Ay]=1;
			dfs(Ax,Ay);
			f[Ax][Ay]=0;
		}
	}
}
int main(){
	cin>>bx>>by>>hx>>hy;
	memset(f,0,sizeof(f));
	f[0][0]=1;
	dfs(0,0);
	cout<<count<<endl;
	return 0;
}
2020/8/16 14:34
加载中...