洛谷[P1002]过河卒
原题地址:https://www.luogu.org/problemnew/show/P1002
题目描述
棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。
棋盘用坐标表示,A点(0, 0)、B点(n, m)(n, m为不超过20的整数),同样马的位置坐标是需要给出的。
现在要求你计算出卒从A点能够到达B点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。
输入输出格式
输入格式:
一行四个数据,分别表示B点坐标和马的坐标。
输出格式:
一个数据,表示所有的路径条数。
输入输出样例
| 输入样例 | 输出样例 |
|---|---|
| 6 6 3 3 | 6 |
| 8 7 3 2 | 102 |
| 14 16 4 5 | 10560723 |
| 20 20 10 10 | 21388094780 |
| 20 20 4 0 | 56477364570 |
思路
用一个21*21的二维数组来表示棋盘上的每一个点,数组的值代表能到达该点的方法数,-1代表不能到达该点,通过对数组的遍历,到达每一个点的方法等于到达该点上边与到达该店左边的方法数之和。
由于结果可能很大,所以二维数组的类型为long long。
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m,n,x,y;
long long a[21][21]={0};//因为答案数据可能会很大,所以用long long类型
cin>>n>>m>>x>>y;
/******将马所在的位置点,以及马的控制点取值为-1******/
//-1 代表不可达到的位置
a[x][y] = -1;
if(x - 1 >= 0 && y - 2 >= 0) a[x-1][y-2] = -1;
if(x - 2 >= 0 && y - 1 >= 0) a[x-2][y-1] = -1;
if(x - 2 >= 0 && y + 1 <= m-1) a[x-2][y+1] = -1;
if(x - 1 >= 0 && y + 2 <= m-1) a[x-1][y+2] = -1;
if(x + 1 <= n && y + 2 <= m) a[x+1][y+2] = -1;
if(x + 2 <= n && y + 1 <= m) a[x+2][y+1] = -1;
if(x + 2 <= n && y - 1 >= 0) a[x+2][y-1] = -1;
if(x + 1 <= n && y - 2 >= 0) a[x+1][y-2] = -1;
int i,j;
/******从A点开始遍历******/
for( i=0;i<=n;i++ ){
for( j=0;j<=m;j++ ){
if( a[i][j] == -1 )continue;
if( i==0&&j==0 ){//将A点赋值为1
a[i][j]=1;
continue;
}
//每个点初始化为0,则能到达该点方法数等于其左边与上边的方法数之和
a[i][j] = 0;
if( j-1>=0&&a[i][j-1]!=-1 ){
a[i][j] += a[i][j-1];
}
if( i-1>=0&&a[i-1][j]!=-1 ){
a[i][j] += a[i-1][j];
}
if( a[i][j]==0 )a[i][j]=-1;//如果该点的左边及上边均为-1,则改点为无法到达的点。赋值为-1
}
}
if( a[n][m]==-1 )cout<<"0";
else cout<<a[n][m];
}
洛谷[P1002]过河卒的更多相关文章
- 洛谷 P1002过河卒
洛谷 P1002过河卒 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点 ...
- 洛谷P1002 过河卒 [2017年4月计划 动态规划15]
P1002 过河卒 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之 ...
- 洛谷P1002——过河卒
又是洛谷题,要不是有小姐姐不会,我才不想动脑子.先贴一下题目地址https://www.luogu.org/problem/P1002 再贴一下题目: 我们读一下题目,这可不比学校的**算法题,读完一 ...
- 洛谷 P1002 过河卒 【棋盘dp】
题目链接:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...
- 洛谷P1002 过河卒 题解 动态规划
题目链接:https://www.luogu.com.cn/problem/P1002 题目大意 棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点.卒行走的规则:可以向下.或者向右.同时在棋盘 ...
- 洛谷P1002 过河卒
关于蒟蒻的我,刚刚接触DP.... 那么就来做一道简单DP吧.... 首先先看题: 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一 ...
- 洛谷P1002 过河卒【dp】
棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为"马拦过河卒 ...
- 洛谷——P1002 过河卒||codevs——T1010 过河卒
https://www.luogu.org/problem/show?pid=1002#sub||http://codevs.cn/problem/1010/ 题目描述 棋盘上A点有一个过河卒,需要走 ...
- 【做题笔记】洛谷P1002过河卒
虽说是 dp 入门题,但还是有很多细节需要注意 如果设 \(f_{x,y}\) 为目标地点为 \((x,y)\) 时走的种数,那么答案就是 \(f_{n,m}\) 在不考虑那只讨厌的马的情况下,对于任 ...
随机推荐
- HDU 4300 Clairewd’s message(扩展KMP)题解
题意:先给你一个密码本,再给你一串字符串,字符串前面是密文,后面是明文(明文可能不完成整),也就是说这个字符串由一个完整的密文和可能不完整的该密文的明文组成,要你找出最短的密文+明文. 思路:我们把字 ...
- 框架-spring源码分析(一)
框架-spring源码分析(一) 参考: https://www.cnblogs.com/heavenyes/p/3933642.html http://www.cnblogs.com/BINGJJF ...
- 原生DOM操作vs框架虚拟DOM比较
1. 原生 DOM 操作 vs. 通过框架封装操作. 这是一个性能 vs. 可维护性的取舍.框架的意义在于为你掩盖底层的 DOM 操作,让你用更声明式的方式来描述你的目的,从而让你的代码更容易维护.没 ...
- idea tomcat启动乱码问题
配置idea的安装文件的编码: JetBrains\IntelliJ IDEA 2016.3\bin中配置文件idea.exe.vmoptions.idea64.exe.vmoptions 添加 -D ...
- eclipse中导入maven项目:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.Maven
org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter) 解决方法为:更新eclipse中的maven插件 1.help ...
- Java Spring-JdbcTemplate
2017-11-10 22:55:45 Spring 对持久层技术支持 : JDBC : org.springframework.jdbc.core.JdbcTemplate Hibernate3.0 ...
- ThinkPHP 3.2 调用自定义函数库
ThinkPHP3.2 和3.1 区别还是有点大的 引入了命名空间,强化了驱动化和行为,增强了模块化的概念和对云平台的支持,并改进了诸多的细节.主要改进包括:模块化架构的全新设计全新命名空间和自动导入 ...
- UVA-1601 The Morning after Halloween(BFS或双向BFS)
题目大意:在一张图中,以最少的步数将a,b,c移到对应的A,B,C上去.其中,每个2x2的方格都有障碍并且不能两个小写字母同时占据一个格子. 题目分析:为避免超时,先将图中所有能联通的空格建起一张图, ...
- Hibernate批量处理数据、[HQL连接查询]
一.批量处理操作 批量处理数据是指在一个事务场景中处理大量数据.在应用程序中难以避免进行批量操作,Hibernate提供了以下方式进行批量处理数据: (1)使用HQL进行批量操作 数据库层面 (2)使 ...
- [转载]浏览器中输入url 并且按下回车之后发生了什么?
解析URL 浏览器通过 URL 能够知道下面的信息: Protocol "http" 使用HTTP协议 Resource "/" 请求的资源是主页(index) ...