题目描述如图:

这道题我以前以回溯的方法做,只能拿到60分

现在才发现是道动态规划题

解题思路:

创建一个(0,0)到终点打小的二维数组表示棋盘

每个坐标的值为此位置到终点的路数

最下方一排和最右方一列如果没有马的控制点,能到终点的路数为1

如图所示:

从下向上,从右向左遍历,每个格子到终点的路数等于下方的格子的值+右方的格子的值

如果遇到马的控制点,则不计算这个格子

完整代码如下:

import java.util.Scanner;

public class DP1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
//创建棋盘
int a=sc.nextInt();
int b=sc.nextInt();
a++;
b++;
long[][] qp=new long[a][b]; //创建马
int n=sc.nextInt();
int m=sc.nextInt(); //如果马的控制点在棋盘内 设置为0
qp[n][m]=-1;
if (n-1>=0&&m-2>=0){
qp[n-1][m-2]=-1;
}
if (n-1>=0&&m+2<b){
qp[n-1][m+2]=-1;
}
if (n-2>=0&&m-1>=0){
qp[n-2][m-1]=-1;
}
if (n-2>=0&&m+1<b){
qp[n-2][m+1]=-1;
}
if (n+1<a&&m-2>=0){
qp[n+1][m-2]=-1;
}
if (n+1<a&&m+2<b){
qp[n+1][m+2]=-1;
}
if (n+2<a&&m-1>=0){
qp[n+2][m-1]=-1;
}
if (n+2<a&&m+1<b){
qp[n+2][m+1]=-1;
} //将棋盘下方边和右方边初始化为1
for (int i = a-1; i>=0; i--) {
if (qp[i][b-1]==-1){
break;
}
qp[i][b-1]=1;
}
for (int i = b-1; i >=0; i--) {
if (qp[a-1][i]==-1){
break;
}
qp[a-1][i]=1;
} for (int i = a-2; i >= 0; i--) {
for (int j = b-2; j >= 0; j--) {
if (qp[i][j]==-1){
continue;
}
if (qp[i+1][j]==-1&&qp[i][j+1]==-1){
continue;
}
if (qp[i+1][j]<0){
qp[i][j]=qp[i][j+1];
continue;
}
if (qp[i][j+1]<0){
qp[i][j]=qp[i+1][j];
continue;
}
qp[i][j]=qp[i+1][j]+qp[i][j+1];
}
}
System.out.println(qp[0][0]); }
}

洛谷P1002过河卒java100分题解的更多相关文章

  1. 洛谷 P1002过河卒

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

  2. 洛谷P1002 过河卒 [2017年4月计划 动态规划15]

    P1002 过河卒 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之 ...

  3. 洛谷P1002 过河卒 题解 动态规划

    题目链接:https://www.luogu.com.cn/problem/P1002 题目大意 棋盘上\(A\)点有一个过河卒,需要走到目标\(B\)点.卒行走的规则:可以向下.或者向右.同时在棋盘 ...

  4. 洛谷P1002——过河卒

    又是洛谷题,要不是有小姐姐不会,我才不想动脑子.先贴一下题目地址https://www.luogu.org/problem/P1002 再贴一下题目: 我们读一下题目,这可不比学校的**算法题,读完一 ...

  5. 洛谷 P1002 过河卒 【棋盘dp】

    题目链接:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...

  6. 洛谷[P1002]过河卒

    原题地址:https://www.luogu.org/problemnew/show/P1002 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点 ...

  7. 洛谷P1002 过河卒

    关于蒟蒻的我,刚刚接触DP....   那么就来做一道简单DP吧.... 首先先看题: 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一 ...

  8. 洛谷P1002 过河卒【dp】

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

  9. 洛谷——P1002 过河卒||codevs——T1010 过河卒

    https://www.luogu.org/problem/show?pid=1002#sub||http://codevs.cn/problem/1010/ 题目描述 棋盘上A点有一个过河卒,需要走 ...

随机推荐

  1. Histogram Processing

    目录 HISTOGRAM EQUALIZATION 代码示例 HISTOGRAM MATCHING (SPECIFICATION) 其它 Gonzalez R. C. and Woods R. E. ...

  2. IT6516替代方案|CS5212替代IT6516|CapstoneCS5212

    IT6516/IT6516BFN:是一款DP显示端口转VGA转换器的嵌入式MCU单片机. IT6516/IT6516BFN结合DisplayPort接收器和三重DAC,通过转换功能支持DisplayP ...

  3. AVD Pixel_2_API_30 is already running. lf that is not the case, delete the files at

    AVD Pixel_2_API_30 is already running. lf that is not the case, delete the files at C:\Users\Adminis ...

  4. .net 经验总结

    先做个自我介绍,我是 2015 年大四实习开始学习的 .net,如果从 2016 年毕业开始算,到目前为止已有 5 年的 web 开发相关经验了,自认为并不是技术很厉害的人,但是也有一点个人的经验,希 ...

  5. SpringBoot集成MyBatis-Plus框架详细方法

    1.说明 本文详细介绍Spring Boot集成MyBatis-Plus框架的方法, 使用MySQL数据库进行测试, 包括完整的开发到测试步骤, 从一开始的Spring Boot工程创建, 到MySQ ...

  6. mysql组织结构

    1.数据的组织结构 <1>层次型 <2>网状型 <3>关系型 2.mysql软件包格式      <1>.软件包管理器特有的格式:.rpm包      ...

  7. CSS基础 元素整体透明效果(包含内容+背景及子元素)

    属性名:opacity:数字+px; 数字值取值0-1之间数字 数字值:1表示完全不透明 0表示完全透明使用后效果 html结构代码 <div class="box"> ...

  8. Docker下安装Elasticsearch、ik分词器、kibana

    1:使用docker拉取Elasticsearch镜像 docker pull elasticsearch:7.12.0(不加版本号默认是最新版本) 2:查看是否成功下载镜像 docker image ...

  9. 解决ubuntu18.04重启后蓝牙鼠标需要重新配对的问题

    打开bash,运行bluetoothctl命令 # bluetoothctl 列出可用的蓝牙控制器 [bluetooth]# list 选择使用的蓝牙控制器 [bluetooth]# select 0 ...

  10. SQL高级优化(二)之MySQL架构

    一.架构 想要学好SQL优化就必须从对应数据库的基本架构开始学习 架构图如下 二.架构分析 1. 连接管理与安全验证 ​     MySQL有连接池(Connection Pool)管理客户端的连接. ...