社区讨论

wa #3 #4,已开long long,求调

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

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@m1oqaxeb
此快照首次捕获于
2024/09/30 16:09
去年
此快照最后确认于
2025/11/04 18:28
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
int ax = 0, ay = 0, bx, by, cx, cy, dp[25][25];
bool IsHorse(int x, int y)
{
	return (cx - 1 == x && cy - 2 == y) ||
		   (cx - 2 == x && cy - 1 == y) ||
		   (cx - 2 == x && cy + 1 == y) ||
		   (cx - 1 == x && cy + 2 == y) ||
		   (cx + 1 == x && cy - 2 == y) ||
		   (cx + 2 == x && cy - 1 == y) ||
		   (cx + 2 == x && cy + 1 == y) ||
		   (cx + 1 == x && cy + 2 == y) || 
		   (cx == x && cy == y);
}
signed main()
{
	cin >> by >> bx >> cy >> cx;
	dp[0][0] = 1;
	for(int i = 1; i <= bx; i++) dp[i][0] = 1;
	for(int i = 1; i <= by; i++) dp[0][i] = 1;
	for(int i = 1; i <= bx; i++)
	{
		for(int j = 1; j <= by; j++)
		{
			if(IsHorse(i, j)) continue;
			else
			{
				dp[i][j] = dp[i - 1][j] * (!IsHorse(i - 1, j)) + dp[i][j - 1] * (!IsHorse(i, j - 1));
//				printf("%d %d %d\n", i, j, dp[i][j]); 
			}
		}
	}
//	for(int i = 0; i <= bx; i++)
//	{
//		for(int j = 0; j <= by; j++) printf("%d ", dp[i][j]); 
//		printf("\n");
//	}
	cout << dp[bx][by] << endl;
	return 0;
}

回复

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

正在加载回复...