首页 > 其他分享 >P1002 [NOIP2002 普及组] 过河卒

P1002 [NOIP2002 普及组] 过河卒

时间:2024-10-30 18:59:44浏览次数:7  
标签:include 过河 NOIP2002 int 路径 P1002 坐标 x2 y2

棋盘上

A 点有一个过河卒,需要走到目标

B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上

C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。

棋盘用坐标表示,

A 点
(
0
,
0
)
(0,0)、

B 点
(

,

)
(n,m),同样马的位置坐标是需要给出的。

现在要求你计算出卒从

A 点能够到达

B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。

输入格式
一行四个正整数,分别表示

B 点坐标和马的坐标。

输出格式
一个整数,表示所有的路径条数。

include

include

include

using namespace std;
const int N = 100;
bool a[N][N];
bool g[N][N];
int b[N][N];
long long f[N][N];
int main()
{
int n, m, x2, y2;
cin >> n >> m >> x2 >> y2;//n,m:b点坐标,马的位置。
int dx[] = {-1,-2,-2,-1,1,2,2,1};//偏移量
int dy[] = {-2,-1,1,2,-2,-1,1,2};
g[x2][y2] = true;//将马的位置设为1
for (int i = 0; i < 8; i++)
{
int t = x2 + dx[i], p = y2 + dy[i];//计算马可能的位置
if (t >= 0 && t <= n && p >= 0 && p <= m) g[t][p] = true;//将可能位置设为1.
}
f[0][0] = 1;
for (int i = 0; i <= n; i++)
{
for (int j = 0; j <= m; j++)
{
if (g[i][j] == false)//当马到不了
{
if (i) f[i][j] += f[i-1][j];//到{i,j}点的所有路径数=从{i-1,j}点的路径数之和以及到{i,j-1}点的路径数之和
if (j) f[i][j] += f[i][j-1];
}
}
}
cout << f[n][m];输出所有路径数。

return 0;

}

标签:include,过河,NOIP2002,int,路径,P1002,坐标,x2,y2
From: https://www.cnblogs.com/lixinran1006/p/18516398

相关文章

  • Spring 应用合并之路(一):摸石头过河
    作者:京东科技李君公司最近一年在推进降本增效,在用尽各种手段之后,发现应用太多,每个应用都做跨机房容灾部署,则最少需要4台机器(称为容器更合适)。那么,将相近应用做一个合并,减少维护项目,提高机器利用率就是一个可选方案。 经过前后三次不同的折腾,最后探索出来一个可行方案。记录......
  • 洛谷 P1002 [NOIP2002 普及组] 过河卒
    你好,我是gwg725。洛谷账号:大号小号欢迎与我讨论。:)题目描述:棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点和P1,……,P8,卒不能通过......
  • P1036 [NOIP2002 普及组] 选数
    [NOIP2002普及组]选数题目链接题目描述已知\(n\)个整数\(x_1,x_2,\cdots,x_n\),以及\(1\)个整数\(k\)(\(k<n\))。从\(n\)个整数中任选\(k\)个整数相加,可分别得到一系列的和。例如当\(n=4\),\(k=3\),\(4\)个整数分别为\(3,7,12,19\)时,可得全部的组合与它们的和为:\(3......
  • 洛谷P1032 [NOIP2002 提高组] 字串变换
    ac代码:#include<bits/stdc++.h>usingnamespacestd;constintN=15;structnode{ stringstr; intstep;};stringa,b;stringorginal[N];stringtranslated[N];intn,ans;map<string,int>ma;stringtrans(conststring&str,inti,i......
  • 信息学奥赛一本通1314:【例3.6】过河卒(Noip2002)
    【题目描述】棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点和P1,……,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n,......
  • P1002 [NOIP2002 普及组] 过河卒
    题目描述棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A 点 (0,0)、B 点 (n,m),同样马的位置坐......
  • 洛谷 P1052 [NOIP2005 提高组] 过河
    原题https://www.luogu.com.cn/problem/P1052题目描述在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:1,⋯,L......
  • DFS和DP--过河卒
    题目描述:棋盘上 A 点有一个过河卒,需要走到目标 ......
  • 题解 P1031 [NOIP2002 提高组] 均分纸牌
    link贪心题中描述每一堆牌只能移动若干张牌到相邻的牌堆上确定了局部最优解必定能推导出全局最优解。易知均分完后,每堆牌的数量都为纸牌总数的平均数\(\mathrm{arg}\)。所以我们可以预处理每堆牌跟\(\mathrm{arg}\)的差距for(inti=1;i<=n;++i)sum+=a[i];......
  • P1031 [NOIP2002 提高组] 均分纸牌
    简单贪心题。如果每个数相等时的数为sum,考虑一个数不等于sum,最好的情况通过一次转移使它变为sum。所以按顺序处理,当前数少从后面拿,当前数多向后面扔,中间记录次数即可。考虑正确性,有人会觉得,如果后面的数不够拿成为了负数,需要从更后面拿,就不止一次转移了。其实,如果遇到上述情......