社区讨论

感觉这道题很迷惑,我目前5个检查点2通过3超时

P1002[NOIP 2002 普及组] 过河卒参与者 4已保存回复 10

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@m20e7yuv
此快照首次捕获于
2024/10/08 20:04
去年
此快照最后确认于
2025/11/04 17:37
4 个月前
查看原帖
我发现这道题有很多点很迷惑,我目前5个检查点2通过3超时
有以下几点要注意:
1、这道题卒不能吃掉马;
2、这道题卒不能走在马上;
3、这道题卒只能往下或往右走。
CPP
#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;
}
实在是不明白这道题那三个超时是怎么造成的。。。

回复

10 条回复,欢迎继续交流。

正在加载回复...