感觉这道题很迷惑,我目前5个检查点2通过3超时
查看原帖
感觉这道题很迷惑,我目前5个检查点2通过3超时
1075989
BlauAnthony楼主2024/10/8 20:02

我发现这道题有很多点很迷惑,我目前5个检查点2通过3超时

有以下几点要注意:

1、这道题卒不能吃掉马;

2、这道题卒不能走在马上;

3、这道题卒只能往下或往右走。

#include<iostream>
using namespace std;
int all=0;
int k[8][2]={{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1},{-2,1},{-1,2}};
void dp(int nx,int ny,int bx,int by,int mx,int my){
	if(nx==bx&&ny==by){
		all++;
	}else{
		for(int i=0;i<8;i++){
			if(nx==mx+k[i][0]&&ny==my+k[i][1]){
				return;
			}
		}
		if(nx==mx&&ny==my){
			return;
		}
		if(nx<bx){
			dp(nx+1,ny,bx,by,mx,my);
		}
		if(ny<by){
			dp(nx,ny+1,bx,by,mx,my);
		}
	}
}
int main(){
	int bx,by,mx,my;
	cin>>bx>>by>>mx>>my;
	dp(0,0,bx,by,mx,my);
	cout<<all;
	return 0;
}

实在是不明白这道题那三个超时是怎么造成的。。。

2024/10/8 20:02
加载中...