题目描述如图:

这道题我以前以回溯的方法做,只能拿到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. 【LeetCode】224. Basic Calculator 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 参考资料 日期 题目地址:https://lee ...

  2. hdu-5568SUM (dp)

    sequence2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  3. .Net下你不得不看的分表分库解决方案-多字段分片

    .Net下你不得不看的分表分库解决方案-多字段分片 介绍 本期主角:ShardingCore 一款ef-core下高性能.轻量级针对分表分库读写分离的解决方案,具有零依赖.零学习成本.零业务代码入侵 ...

  4. 【Azure API 管理】为调用APIM的请求启用Trace -- 调试APIM Policy的利器

    问题描述 在APIM中,通过门户上的 Test 功能,可以非常容易的查看请求的Trace信息,帮助调试 API 对各种Policy,在Inbound,Backend, Outbound部分的耗时问题, ...

  5. One Pixel Attack for Fooling Deep Neural Networks

    目录 概 主要内容 问题描述 Differential Evolution (DE) 实验 Su J, Vargas D V, Sakurai K, et al. One Pixel Attack f ...

  6. Android程序设计基础 • 【第1章 Android程序入门】

    全部章节   >>>> 本章目录 1.1 Android 平台介绍 1.1.1 Android 简介 1.1.2 Android 平台的发展 1.1.3 Android 平台架 ...

  7. Java初学者作业——编写Java程序,实现判断所输入字符的类型(数字、小写字母、大写字母或其他字符)

    返回本章节 返回作业目录 需求说明: 编写Java程序,实现判断所输入字符的类型(数字.小写字母.大写字母或其他字符) 实现思路: 声明变量c,用于存储用户输入的字符. 通过Scanner接收用户输入 ...

  8. golang mongodb 驱动二次封装

    mongodb 官方的go驱动包 go.mongodb.org/mongo-driver 使用起来比较繁琐,最近对其进行了二次封装 github地址:https://github.com/w3liu/ ...

  9. Flask_响应(四)

    响应即视图函数的返回值,前面的例子的返回值都很简单,直接返回值.但是Flask Http协议的返回值中通常还会有以下几种不同的方式. 一.return元组 通过return一个元组构造响应信息. 语法 ...

  10. Maven+ajax+SSM实现删除

    转载自:https://www.cnblogs.com/kebibuluan/p/9020381.html 3.尚硅谷_SSM高级整合_使用ajax操作实现删除的功能 点击删除的时候,要删除联系人,这 ...