社区讨论
10分
P1002[NOIP 2002 普及组] 过河卒参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mi6hdtba
- 此快照首次捕获于
- 2025/11/20 04:54 4 个月前
- 此快照最后确认于
- 2025/11/20 04:54 4 个月前
CPP
#include <cstdio>
#define MAX 22
bool cb[MAX][MAX];
int bx, by;
long count = 0;
void getCheckerBord(bool cb[MAX][MAX], int bx, int by, int cx, int cy)
{
for (int i = 0; i < MAX; ++i)
{
for (int j = 0; j < MAX; ++j)
{
cb[i][j] = false;
}
}
cb[cx][cy] = true;
cb[cx + 1][cy + 2] = true;
cb[cx - 1][cy + 2] = true;
cb[cx + 1][cy - 2] = true;
cb[cx - 1][cy - 2] = true;
cb[cx + 2][cy + 1] = true;
cb[cx - 2][cy + 1] = true;
cb[cx + 2][cy - 1] = true;
cb[cx - 2][cy - 1] = true;
for (int i = 0; i <= bx; i++)
{
cb[bx + 1][i] = true;
}
for (int j = 0; j <= by; j++)
{
cb[j][by + 1] = true;
}
}
long move(int ax, int ay, int bx, int by)
{
if (ax == bx && ay == by) return 1;
if (cb[ax][ay] == true || ax > bx && ay > by) return 0;
return move(ax + 1, ay, bx, by) + move(ax, ay+1, bx, by);
}
int main()
{
int ax = 0, ay = 0;
int bx, by;
int cx, cy;
long sum;
scanf("%d %d %d %d", &bx, &by, &cx, &cy);
getCheckerBord(cb, bx, by, cx, cy);
sum = move(ax, ay, bx, by);
printf("%ld", sum);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...