马踏过河卒

 

  •  1000ms
  •  131072K

AA 点有一个过河卒,需要走到目标 BB 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的 CC 点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 CC 点上的马可以控制 99 个点(图中的 P1,P2 \cdots P8P1,P2⋯P8 和 CC)。卒不能通过对方马的控制点。

棋盘用坐标表示,AA 点(00,00)、BB 点(nn,mm)、CC 点(c_xcx​,c_ycy​)(0 < c_x < n \leq 200<cx​<n≤20,0 < c_y < m \leq 200<cy​<m≤20)。现在要求你计算出过河卒从 AA 点能够到达 BB 点的路径的条数。注:象棋中马走“日”。

输入格式

输入 44 个整数,nn,mm,c_xcx​,c_ycy​,分别表示 BB 点的横纵坐标和 CC 点的横纵坐标。

输出格式

输出一个整数,代表从 AA 点走到 BB 点的所有路径数。

样例输入

5 5 2 4

样例输出

14

代码如下

 

 

#include<iostream>

 

using namespace std;
long long f[31][31];
int dir[8][2]={{1,2},{-1,2},{1,-2},{-1,-2},{2,-1},{2,1},{-2,1},{-2,-1}};int main()
{int n,m,cx,cy;cin>>n>>m>>cx>>cy;int d[30][30];for(int i=0;i<30;i++)for(int j=0;j<30;j++)d[i][j]=0;d[cx][cy]=1;for(int k=0;k<8;k++){int tx=cx+dir[k][0];int ty=cy+dir[k][1];if(tx>=0&&tx<=n&&ty<=m&&ty>=0)d[tx][ty]=1;}f[0][0]=1;for(int i=0;i<=n;i++)for(int j=0;j<=m;j++){if(i!=0&&d[i][j]!=1)f[i][j]=f[i][j]+f[i-1][j];if(j!=0&&d[i][j]!=1)f[i][j]=f[i][j]+f[i][j-1];}cout<<f[n][m]<<endl;  
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

墙壁涂色

蒜头君觉得白色的墙面好单调&#xff0c;他决定给房间的墙面涂上颜色。他买了 3 种颜料分别是红、黄、蓝&#xff0c;然后把房间的墙壁竖直地划分成 n 个部分&#xff0c;蒜头希望每个相邻的部分颜色不能相同。他想知道一共有多少种给房间上色的方案。 例如&#xff0c;当 n …

算法提高 学霸的迷宫

问题描述 学霸抢走了大家的作业&#xff0c;班长为了帮同学们找回作业&#xff0c;决定去找学霸决斗。但学霸为了不要别人打扰&#xff0c;住在一个城堡里&#xff0c;城堡外面是一个二维的格子迷宫&#xff0c;要进城堡必须得先通过迷宫。因为班长还有妹子要陪&#xff0c;磨刀…

基础练习 Huffuman树

问题描述 Huffman树在编码中有着广泛的应用。在这里&#xff0c;我们只关心Huffman树的构造过程。   给出一列数{pi}{p0, p1, …, pn-1}&#xff0c;用这列数构造Huffman树的过程如下&#xff1a;   1. 找到{pi}中最小的两个数&#xff0c;设为pa和pb&#xff0c;将pa和pb从…

基础练习 FJ的字符串 递推 C++

问题描述 FJ在沙盘上写了这样一些字符串&#xff1a;   A1 “A”   A2 “ABA”   A3 “ABACABA”   A4 “ABACABADABACABA”   … …   你能找出其中的规律并写所有的数列AN吗&#xff1f; 输入格式 仅有一个数&#xff1a;N ≤ 26。 输出格式 请输出相应的字…

基础练习 Sine之舞 (递推)

问题描述 最近FJ为他的奶牛们开设了数学分析课&#xff0c;FJ知道若要学好这门课&#xff0c;必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏&#xff0c;寓教于乐&#xff0c;提高奶牛们的计算能力。   不妨设   Ansin(1–sin(2sin(3–sin(4.…

算法训练 数的划分 动态规划

算法训练 数的划分 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB 问题描述 将整数n分成k份&#xff0c;且每份不能为空&#xff0c;任意两份不能相同(不考虑顺序)。   例如&#xff1a;n7&#xff0c;k3&#xff0c;下面三种分法被认为是相同的。   1&#…

算法提高 邮票面值设计 搜索 动态规划

算法提高 邮票面值设计 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB 问题描述 给定一个信封&#xff0c;最多只允许粘贴N张邮票&#xff0c;计算在给定K&#xff08;NK≤13&#xff09;种邮票的情况下&#xff08;假定所有的邮票数量都足够&#xff09;&#x…

算法提高 01背包

算法提高 01背包 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB 问题描述 给定N个物品,每个物品有一个重量W和一个价值V.你有一个能装M重量的背包.问怎么装使得所装价值最大.每个物品只有一个. 输入格式 输入的第一行包含两个整数n, m&#xff0c;分别表示物品的…

算法提高 数的划分 动态规划 无序

问题描述 一个正整数可以划分为多个正整数的和&#xff0c;比如n3时&#xff1a;   3&#xff1b;1&#xff0b;2&#xff1b;1&#xff0b;1&#xff0b;1&#xff1b;   共有三种划分方法。   给出一个正整数&#xff0c;问有多少种划分方法。 输入格式 一个正整数n …

非常可乐

大家一定觉的运动以后喝可乐是一件很惬意的事情&#xff0c;但是seeyou却不这么认为。因为每次当seeyou买了可乐以后&#xff0c;阿牛就要求和seeyou一起分享这一瓶可乐&#xff0c;而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子&#xff0c;它们的容量分别是N 毫…

历届试题 蚂蚁感冒

问题描述 长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左&#xff0c;有的朝右。   每只蚂蚁都只能沿着杆子向前爬&#xff0c;速度是1厘米/秒。   当两只蚂蚁碰面时&#xff0c;它们会同时掉头往相反的方向爬行。   这些蚂蚁中&#xff0c;有1只蚂蚁感冒了。并且在…

小学生测验

关于这段代码&#xff1a; 数据存放在一个叫data的文件中增加了结构体排序&#xff0c;对小学生们的成绩排名其他要求如同题干大一时写的版本&#xff0c;没文件读写&#xff0c;大三时写的在下面。 项目一 小学生测验 16学时 问题描述&#xff1a;面向小学1~2年级学…

算法训练 和为T 深度搜索

问题描述 从一个大小为n的整数集中选取一些元素&#xff0c;使得它们的和等于给定的值T。每个元素限选一次&#xff0c;不能一个都不选。 输入格式 第一行一个正整数n&#xff0c;表示整数集内元素的个数。   第二行n个整数&#xff0c;用空格隔开。   第三行一个整数T&am…

算法训练 瓷砖铺放 递归

问题描述 有一长度为N(1<&#xff2e;<10)的地板&#xff0c;给定两种不同瓷砖&#xff1a;一种长度为1&#xff0c;另一种长度为2&#xff0c;数目不限。要将这个长度为N的地板铺满&#xff0c;一共有多少种不同的铺法&#xff1f;   例如&#xff0c;长度为4的地面一…

链表应用 多项式相加

用链表实现多项式相加 #include<iostream> #include<cstdio> #include<malloc.h> #define flag -1 using namespace std; typedef struct Node {float coef;int expn;struct Node *next; }LNode,*LinkList;void CreatLinkList(LinkList L) {LNode *r,*s;fl…

KMP算法 串模式识别 用nextval[j]改进next[j]

用nextval[]改进next[] 还有&#xff0c;代码真美&#xff0c;看了好久 #include<stdio.h> #define MAXSIZE 100 #include<iostream> using namespace std;typedef struct {char data[MAXSIZE];int length; }SqString;void StrAssign(SqString &s,char cstr[]…

vi(vim)编辑器 学习笔记

vi是非图形化的编辑器 vim是vi的加强版。 三种使用模式 一般模式用户可以进行光标的移动&#xff0c;删除字符以及复制 编辑模式下&#xff0c;用户可以插入或者删除字符 命令模式下&#xff0c;可以保存文件或者退出编辑器 移动操作 向下移动光标&#xff1a;下箭头&#…

动态数组vector的使用_简单代码示例

简单代码示例 //动态数组vector的使用 #include <iostream> #include <vector> //用 <vector>头文件 using namespace std; int main() {vector<int> a; //新建一个int型数组a[] a.push_back(0); //数组末尾插入0 a.push_back(1); …

二维数组vector的代码使用简单例子_vector容器_ 用构造函数vectorint()

二维数组vector 用构造函数vector<int>() #include <iostream> #include<vector> using namespace std;int main() {vector<vector<int> > v2d;//开一个vector用来存放vector类型的容器&#xff0c;用空格区分> >和>> for(int i0;…

素筛打表(输出小于n最大素数)

今天有一个小学弟问我洛谷一个很基础的题目&#xff0c;顺便重新温习了一下素筛&#xff0c;网上别人的代码风格真的不习惯。 #include<iostream> using namespace std; const int MAX100000; bool is_prime[MAX];int main() {int n;cin>>n;for(int i2;i<n;i)i…