🏆今日学习目标: 🍀理解,学会过河卒题目 ✅创作者:贤鱼 🎉个人主页:贤鱼的个人主页 🔥专栏系列:c++
过河卒
题目
- 题目
- 思路
- AC代码
棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,A 点 (0, 0)、B 点 (n, m),同样马的位置坐标是需要给出的。 现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。 输入格式 一行四个正整数,分别表示B 点坐标和马的坐标。 输出格式 一个整数,表示所有的路径条数。 输入输出样例 输入 #1复制 6 6 3 3 输出 #1复制 6 说明/提示 对于 100% 的数据1≤n,m≤20,0≤ 马的坐标 ≤20。
思路对于这道题,我们首先可以算出来马的八个移动点的范围,将他们设为1,这样子就处理好了马。,然后就是一个简单的dp题了,题目中说了,人只能向下或者向右,所以vis[i][j]=vis[i-1][j]+vis[i][j-1],下面来看看代码
AC代码#include
#include
#include
#include
using namespace std;
long mapp[1001][1001];
long vis[1001][1001];
long x,y,xx,yy;//记得开longlong
long n,m;
long ans=0;
int main(){
cin>>x>>y>>xx>>yy;
n=x,m=y;
mapp[xx][yy]=1;
if(xx > 1 && yy != 0) mapp[xx - 2][yy - 1] = 1;
if(xx 1 && yy != 20) mapp[xx - 2][yy + 1] = 1;
if(xx 1) mapp[xx - 1][yy - 2] = 1;
if(xx != 0 && yy 1) mapp[xx + 1][yy - 2] = 1;
if(xx != 20 && yy
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?