蓝桥杯题目---过河卒(线性dp 人为扩充网格边界,以防越界)

这篇博客讨论了一个棋盘游戏中卒从起点AA到终点BB的可行路径计数问题。卒只能向下或向右移动,且不能经过马的控制点。博客给出了马的控制点定义,并展示了一个C++程序,该程序使用动态规划计算卒的路径数量。程序首先初始化状态矩阵dp,并标记马的控制点,然后通过迭代更新dp矩阵,最后输出到达终点的路径总数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图,AA 点有一个过河卒,需要走到目标 BB 点。卒行走规则:可以向下、或者向右。同时在棋盘上的 CC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。

图片描述

例如上图 CC 点上的马可以控制 99 个点(图中的 P_1,P_2,
和 CC)。卒不能通过对方马的控制点。

棋盘用坐标表示,A点(0,0)、B 点(n,m)同样马的位置坐标是需要给出的。

现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。。

输入描述
一行四个正整数,分别表示 BB 点坐标和马的坐标。

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

样例输入
6 6 3 3
样例输出
6

注意:当不方便处理网格点 可以人为增加网格边界 注意细节的处理
dp状态方程的写法:由于只能向下或者右走,所以某一点只能从上面或者左面来.

#include<bits/stdc++.h>
using namespace std;
long long dp[40][40]={
   0};//dp[i][j]表示卒走到坐标[i][j]时能走的路径条数
int s[40][40]; //标记马的控制点;
int main(){
   
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值