洛谷P1002过河卒(60分)
逻辑没问题,运行超时,得分60
写注释了,不多解释
import java.util.Scanner; public class D1 {
static int a,b,c,d,con; //棋盘大小 马的位置
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
a=sc.nextInt();
b=sc.nextInt();
c=sc.nextInt();
d=sc.nextInt();
con=0; //到达终点的次数 //初始化棋盘
int[][] qp=new int[a+1][b+1];
for (int i = 0; i < a+1; i++) {
for (int j = 0; j < b+1; j++) {
qp[i][j]=0;
}
}
//马能跳到的位置如果合法 设置为马的控制区(避免马在边缘 棋盘下标越界)
qp[c][d]=1;
if (!(c-2<0||d-1<0)){
qp[c-2][d-1]=1;
}
if (!(c-2<0||d+1>b)){
qp[c-2][d+1]=1;
}
if (!(c-1<0||d-2<0)){
qp[c-1][d-2]=1;
}
if (!(c-1<0||d+2>b)){
qp[c-1][d+2]=1;
}
if (!(c+1>a||d-2<0)){
qp[c+1][d-2]=1;
}
if (!(c+1>a||d+2>b)){
qp[c+1][d+2]=1;
}
if (!(c+2>a||d-1<0)){
qp[c+2][d-1]=1;
}
if (!(c+2>a||d+1>b)){
qp[c+2][d+1]=1;
} //开始递归回溯
D1 d=new D1();
d.xl(qp,0,0);
//输出结果
System.out.println(con); } //自动寻路
private boolean xl(int[][] qp,int i,int j){
//如果到达终点,回溯并重置为0 到达次数+1
if (qp[a][b]==2){
qp[a][b]=0;
con++;
return false;
}
//如果当前位置合法,标记为2,递归下一个位置
if (pd(qp,i,j)){
qp[i][j]=2;
if (xl(qp,i+1,j)){
qp[i][j]=0;
return false;
}else if (xl(qp,i,j+1)){
qp[i][j]=0;
return false;
}
qp[i][j]=0;
}
return false;
} //当前位置是否合法
private boolean pd(int[][] qp,int i,int j){
if (i>=a+1||j>=b+1){
return false;
}else if (qp[i][j]!=0){
return false;
}
return true;
}
}
洛谷P1002过河卒(60分)的更多相关文章
- 洛谷P1002过河卒java100分题解
题目描述如图: 这道题我以前以回溯的方法做,只能拿到60分 现在才发现是道动态规划题 解题思路: 创建一个(0,0)到终点打小的二维数组表示棋盘 每个坐标的值为此位置到终点的路数 最下方一排和最右方一 ...
- 洛谷 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.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点有一个过河卒,需要走 ...
随机推荐
- 【LeetCode】513. Find Bottom Left Tree Value 解题报告(Python & C++ & Java)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS DFS Date 题目地址:https:// ...
- spoj-ORDERS - Ordering the Soldiers
ORDERS - Ordering the Soldiers As you are probably well aware, in Byteland it is always the military ...
- YAPTCHA(hdu2973)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- Centos 切换中文输入法
切换输入法看起来是一个非常简单的操作,但是对于初学者来说,也并非那么简单,开始会发现按Ctrl+space无法切换中文输入法,原因是系统没有安装中文输入法,运行以下命令可以安装中文输入法: yum i ...
- Estimation of Non-Normalized Statistical Models by Score Matching
目录 概 主要内容 方法 损失函数的转换 一个例子 Hyv"{a}rinen A. Estimation of Non-Normalized Statistical Models by Sc ...
- TensorFlow.NET机器学习入门【7】采用卷积神经网络(CNN)处理Fashion-MNIST
本文将介绍如何采用卷积神经网络(CNN)来处理Fashion-MNIST数据集. 程序流程如下: 1.准备样本数据 2.构建卷积神经网络模型 3.网络学习(训练) 4.消费.测试 除了网络模型的构建, ...
- Java Record 的一些思考 - 序列化相关
Java Record 序列化相关 Record 在设计之初,就是为了找寻一种纯表示数据的类型载体.Java 的 class 现在经过不断的迭代做功能加法,用法已经非常复杂,各种语法糖,各种多态构造器 ...
- Swoole 中协程的使用注意事项及协程中的异常捕获
协程使用注意事项 协程内部禁止使用全局变量,以免发生数据错乱: 协程使用 use 关键字引入外部变量到当前作用域禁止使用引用,以免发生数据错乱: 不能使用类静态变量 Class::$array / 全 ...
- RPC框架下实现文件上传到linux服务器
一.前端使用element -ui 的upload组件 :data 表示额外传递的参数, :header 表示设置请求头参数,如,token等, action表示后台api接口的地址 二. conto ...
- spring boot 启动警告 WARN 15684 --- [ restartedMain] c.n.c.sources.URLConfigurationSource : No URLs will be polled as dynamic configuration sources. 解决
添加一个配置文件config.properties ,即便是空的也是可以的