洛谷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点有一个过河卒,需要走 ...
随机推荐
- 【剑指Offer】树的子结构 解题报告(Python)
[剑指Offer]树的子结构 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目 ...
- Robot(hdu5673)
Robot Accepts: 92 Submissions: 188 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 ...
- 【LeetCode】804. Unique Morse Code Words 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述: 题目大意 解题方法 set + map set + 字典 日期 题目地 ...
- 1301 - Monitoring Processes
1301 - Monitoring Processes PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: ...
- 1076 - Get the Containers
1076 - Get the Containers PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...
- 移动端H5-iPhone安全距离适配
安全区域? 安全区域指的是一个可视窗口范围,处于安全区域的内容不受圆角(corners).齐刘海(sensor housing).小黑条(Home Indicator)影响,如下图蓝色区域: 也就是说 ...
- Python调用Prometheus监控数据并计算
Prometheus是什么 Prometheus是一套开源监控系统和告警为一体,由go语言(golang)开发,是监控+报警+时间序列数 据库的组合.适合监控docker容器.因为kubernetes ...
- FAT
目录 概 主要内容 代码 Zhang J., Xu X., Han B., Niu G., Cui L., Sugiyama M., Kankanhalli M. Attacks which do n ...
- CS5211替代兼容PS8625|普瑞PS8625替代方案|CapstoneCS5211
PS8625是一个DP显示端口 到LVDS转换器芯片,利用GPU和显示端口(DP) 或嵌入式显示端口(eDP) 输出和接受LVDS输入的显示面板.PS8625实现双通道DP输入,双链路LVDS输出.P ...
- Zookeeper基础教程(二):Zookeeper安装
上一篇说了,一个Zookeeper集群一般认为至少需要3个节点,所以我们这里安装需要准备三台虚拟机: # 192.168.209.133 test1 # 192.168.209.134 test2 # ...