社区讨论

34两点wa

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

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@m1ge2rd1
此快照首次捕获于
2024/09/24 20:04
去年
此快照最后确认于
2024/09/24 21:32
去年
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
long long dp[21][21],bx,by,mx,my;
bool pd(int x,int y){
	if(x==mx&&y==my)return 1;
	if(x==mx+1&&y==my+2)return 1;
	if(x==mx+2&&y==my+1)return 1;
	if(x==mx-1&&y==my+2)return 1;
	if(x==mx-2&&y==my+1)return 1;
	if(x==mx+1&&y==my-2)return 1;
	if(x==mx+2&&y==my-1)return 1;
	if(x==mx-1&&y==my-2)return 1;
	if(x==mx-2&&y==my-1)return 1;
	return 0;
}
int main(){
	cin >>bx>>by>>mx>>my;
	memset(dp,0,sizeof(dp));
	for(int i=0;i<=bx;i++)
	    dp[i][0]=1;
	for(int i=0;i<=by;i++)
	    dp[0][i]=1;
	for(int i=-2;i<=2;i++){
		for(int j=-2;j<=2;j++){
			if(i==0&&j!=0)continue;
			if(abs(i)==2&&abs(j)==2)continue;
			if(abs(j)==1&&abs(i)==1)continue;
			if(mx-i>=0&&my-j>=0)
			dp[mx-i][my-j]=0;
		}
	}
	for(int i=1;i<=bx;i++)
		for(int j=1;j<=by;j++)
			if(!pd(i,j))
			   dp[i][j]=dp[i-1][j]+dp[i][j-1];
	cout<<dp[bx][by];
	return 0;
}

回复

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

正在加载回复...