求调
查看原帖
求调
834251
sdsshwt楼主2024/5/7 16:06

RT

#include<bits/stdc++.h>
using namespace std;
int sx,sy,ex,ey,n,m,X,Y,t[55][55],dy[]={1,0,-1,0},dx[]={0,1,0,-1};
int ddx[]={-2,-1,1,2,2,1,-1,-2},ddy[]={1,2,2,1,-1,-2,-2,-1},T[8][2];
long long s;
void dfs(int x,int y,int bs){
	if(x==sx&&y==sy){
		s++;
		return;
	}
	for(int i=0;i<4;i++){
		int tx=dx[i]+x,ty=dy[i]+y;
		if(t[tx][ty]==0&&tx<=4&&tx>=0&&ty<=8&&ty>=0){
			bool Q=1;
			for(int i=0;i<8;i++){
				if(tx==T[i][0]&&ty==T[i][1]){
					Q=0;
					break;
				}
			}
			if(Q){
				t[tx][ty]=1;
				dfs(tx,ty,bs+1);
				t[tx][ty]=0;
			}
		}
	}
	return;
}
int main(){
	cin>>sx>>sy>>ex>>ey;
	t[sx][sy]=1;
	for(int i=0;i<8;i++){
		int qtx=ddx[i]+ex,qty=ddy[i]+ey;
		T[i][0]=qtx,T[i][1]=qty;
	}
	dfs(0,0,0);
	cout<<s;
	return 0;
}

样例输出0

2024/5/7 16:06
加载中...