过河卒(NOIP2002PJ)超详解

本文详细解析NOIP2002年的《过河卒》问题,阐述卒从A(0,0)到B(n,m)的可行路径计数方法。卒只能向下或向右移动,避开马(C点)的控制范围。通过建立棋盘矩阵,用动态规划求解,最终输出路径数量。代码展示及思路分析帮助理解解题过程。" 98780028,8697183,Python中的线程与进程详解,"['Python编程', '多线程', '进程管理', '并发处理', '同步机制']
摘要由CSDN通过智能技术生成

Hello,everybody!
我们又见面了,我是Aqin!

今天呢带来《过河卒》的代码(C++)

题目如下:

题目描述
如图,A点有一个过河卒,需要走到目标B点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如图中的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如图中C 点上的马可以控制9个点(图中的P1,P2…P8 和C)。卒不能通过对方马的控制点。

在这里插入图片描述

棋盘用坐标表示,A点(0,0)、B点(n,m)(n,m 为不超过20的整数,并由键盘输入),同样马的位置坐标是需要给出的(约定:C<>A,同时C<>B)。现在要求你计算出卒从A点能够到达B点的路径的条数。

输入
只有一行四个整数n,m,x,y。
其中,(n,m)表示B点的坐标,(x,y)表示对方马的坐标。

输出
只有一行一个整数,表示路径的条数。

相信思路大家都会,这里简单地说一下:
先将边权赋值为1,进行双重循环,数组中每一个的值为上面的的值加左边的值,如果遇到吗能到的点就归0,然后继续做,最后输出第[n][m]个点的值就行了。

好啦,思路就是这样,下面上代码!!!

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
/*
注意,注意,此处不能改为万能头文件!!!
因为我定义了map函数,而map是STL的一个关联容器,若使用万能头文件,会编译错误!!!
*/

using namespace std;
const int maxn = 25;
int map[maxn][maxn];
int n,m,x,y;
int dir[8][2] = {
   {
   -2,-1},{
   -2,1}<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值