洛谷 P1002 过河卒 Java

P1002 过河卒 【DP】 题目描述 棋盘上 AAA 点有一个过河卒,需要走到目标 BBB 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 CCC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,AAA 点 (0,0)(0, 0)(0,0)、BBB 点 (n,m)(n, m)(n,m),同样马的位置坐标是需要给出的。 现在要求你计算出卒从 AAA 点能够到达 BBB 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。 输入格式 一行四个正整数,分别 阅读详情

洛谷 P1002

过河卒

题目

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

棋盘用坐标表示,AA 点(0, 0)(0,0)、BB 点(n, m)(n,m)(nn, mm 为不超过 2020 的整数),同样马的位置坐标是需要给出的。

现在要求你计算出卒从 AA 点能够到达 BB 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。

思路

害,太久没做题了,说实话一开始对这一筹莫展,想着可能会用递归,之后看了题解终于才懂了要使用递推来做。

答案

参考代码

代码
public class Main{
  public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x1 = scanner.nextInt();
        int y1 = scanner.nextInt();
        int x2 = scanner.nextInt();
        int y2 = scanner.nextInt();
        //记录马的位置以及马控制的位置
        int[][] array1 = new int[x1 + 1][y1 + 1];
        long[][] array2 = new long[x1 + 1][y1 + 1];
        array1[x2][y2] = -1;
        for (int i = 0; i <= x1; i++) {
            for (int j = 0; j <= y1; j++) {
                if ((Math.abs((i - x2)) == 1 && Math.abs((j - y2)) == 2) || Math.abs((i - x2)) == 2 && Math.abs((j - y2)) == 1) {
                    array1[i][j] = -1;
                }
            }
        }
        //递推
        for (int i = 0; i <= x1; i++) {
            for (int j = 0; j <= y1; j++) {
                if (array1[i][j] != -1) {
                    if (i == 0 && j == 0) {
                        array2[i][j] = 1;
                    }
                    if (i > 0 && j > 0) {
                        array2[i][j] = array2[i - 1][j] + array2[i][j - 1];
                    }
                    if (i == 0 && j > 0) {
                        array2[i][j] = array2[i][j - 1];
                    }
                    if (j == 0 && i > 0) {
                        array2[i][j] = array2[i - 1][j];
                    }
                } else {
                    array2[i][j] = 0;
                }
            }
        }
        System.out.println(array2[x1][y1]);
    }
}

原文博客地址:https://noahcode.cn/

洛谷P1002 过河卒 JAVA 听说大家都用动态规划来解决,我不懂动态规划,用了类似斐波那契数列的办法,因为只能向右或向下移动,所以到(i,j)的路径 ans[i][j]=ans[i-1][j]+ans[i][j-1]。 话不多说直接贴上代码 package demo; import java.util.Scanner; class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n,m,x. 阅读详情

相关推荐

洛谷 P1002 过河卒 Java实现(解法优化版本)

题目描述 算法思想 当前点到目标点的路径数量就是:右边的点到目标点的路径数量+下面的点到目标点的路径数量,依次类推,直到目标点。 由于我们是知道目标点位置的,所以直接从目标点开始,依次计算节点到目标节点的路径数量,赋值完成后起点(0,0)的值就是题目的解。 以下为核心代码: public static void getPathPro(long[][] map,int aim_x,int aim_...

weixin_41551630的博客 517

洛谷——P1002 过河卒

仔细观察题目可以发现一个规律,毕竟这个 “ 卒 ” 只能往下走和往右走,那就说明:如果要求走到一个位置(x,y)有多少种方法,我就可以先求出这个位置(x,y)的上面那个位置(x-1,y)的方案数,再求出这个位置(x,y)的左边那个位置(x,y-1)的方案数,二者相加就表示走到(x,y)位置的方案数了。棋盘上 A 点有一个过河卒,需要走到目标 B 点。首先想到的是搜索,先用的是深度搜索,然后时间超限了,但是深搜没有什么能改的地方,所以我试了下广度搜索,也是不行的。

明里灰的博客 1460

洛谷Java写 P1002 [NOIP2002 普及组]过河卒

洛谷 Java 过河卒

Yhirteenxin的博客 558

洛谷 P1002 过河卒 - Java题解

同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。从终点位置到起点进行分析,到终点的路径只能是从(n-1,m)或(n,m-1)点来走,所以到终点路径数也只能是到这两点路径数的加和。到了这里对于 f数组的优化就结束了,但是还有一个很大的数组需要优化就是flag标记数组,这个数组优化后可以节省大量的时间和空间,优化的思路则涉及一些数学问题。现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。先考虑不带马的情况。

m0_69502892的博客 848

洛谷P1002(2).cpp

洛谷P1002(2).cpp

UG/NX二次开发实战:用Python脚本批量更新100个零件参数,解放你的双手

本文详细介绍了如何利用NXOpen Python API进行UG/NX二次开发,实现批量更新100个零件参数的自动化流程。通过环境配置、框架设计、核心代码实现及性能优化,帮助工程师高效完成参数化设计任务,显著提升工作效率。

weixin_28694169的博客 277

洛谷P1002过河卒题解

递推题

marklikeamd的博客 516

wsl + vscode 离线配置 ERROR: Faild to download https://update.code.visualstudio.com

很多情况下是没有现成的VS Code Server程序的,需要手动下载。记住上面的Commit ID,可以通过下面的链接下载 vscode-server-linux-x64.tar.gz。然后将vscode-server-linux-x64.tar.gz上传在服务器上的$HOME/.vscode-server/bin文件夹中,解压。在wsl中下载不了 vscode 的核心。运行下面两行命令,建立空的$HOME/.vscode-server/bin文件夹。重新运行 wsl与vs的链接即可。

点云算法工程师 3792

[ 动态规划 ] 洛谷 P1002 过河卒 java讲解

【代码】[ 动态规划 ] 洛谷 P1002 过河卒 java讲解。

l2941653482的博客 434

强化学习:Distributed PPO (DPPO) 学习笔记

DPPO = Distributed + Proximal Policy Optimization Distributed:多个智能体并行训练 Proximal:限制策略更新幅度,确保稳定性 Policy Optimization:基于策略梯度的优化方法 核心思想:多个智能体并行探索环境,共享经验,通过裁剪策略更新确保训练稳定

只是个人学习笔记 1332

Visual Studio 2022调试Godot 4 C#项目全攻略:从环境配置到断点调试

本文详细介绍了如何配置Visual Studio 2022以高效调试Godot 4 C#项目。从环境搭建、外部编辑器设置到两种核心调试模式(附加到进程与启动配置)的实战指南,帮助开发者构建无缝的工业级工作流,解决编码乱码、断点失效等常见问题,大幅提升开发与问题排查效率。

bush的博客 392

洛谷 P1002 过河卒 Java实现(待优化)

题目要求 实现代码: import java.util.Scanner; public class P1002 { public static int count=0; public static void main(String[] args){ Scanner scanner=new Scanner(System.in); int aim...

weixin_41551630的博客 303

主流 AI 插件 之一的 Copilot 介绍

Copilot 是微软推出的一款人工智能助手,旨在通过自然语言交互帮助您提升工作效率和创造力,覆盖多平台,提供智能问答、内容生成、代码辅助等功能。其核心定位为“日常 AI 伴侣”,旨在通过自然语言交互提升工作与生活效率。

u014695938的博客 6919

洛谷题解(Java) P1002 [NOIP 2002 普及组] 过河卒

3、根据题目分析:卒可以向下、或者向右,所以棋盘的第一行和第一列的任意一个位置都只能从同一行/同一列的上一个位置得到,故将第一行和第一列的任意位置dp[i][j]为1,若第一行/第一列出现马的标记则暂定后续标记。1、dp数组含义:dp[i][j]表示到达该位置的路线数。2、由于题目中“马拦过河卒”的设定,需要先标记马的位置。

2301_76171308的博客 897

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025

YOLO系列算法改进 | 自研篇 | C3k2融合SEFN空间增强前馈网络模块 | 去模糊和提升图像细节特征,精度涨点!| WACV 2025 (以YOLO26最新目标检测模型为基础,C3k2融合SEFN空间增强前馈网络模块改进Backbone)

2502_91881744的博客 240

移动端 AI 部署:ONNX Runtime + Android 从模型到 App

移动端 ONNX 部署的流程是 PC 端导出 ONNX → 放到 Android 项目 assets → ONNX Runtime AAR 加载推理。核心是OrtSession,预处理在 Java 层用 Bitmap 操作完成。建议先在 PC 上用 onnxruntime Python 验证模型正确,再集成到 Android 端,可以减少定位问题的时间。ONNX Runtime 自动调用 NNAPI,在主流芯片上不需要额外适配。

know_F0727的博客 73

[洛谷刷题-java]P1002-过河卒

问题: 难度:普及- 说明: 具体还是去洛谷看吧:https://www.luogu.com.cn/problem/P1002。 一个从(0,0)的卒要到达指定位置,其中有个马拦截,马自身(不能吃)和他的攻击点都不能到达,然后求到达位置路径数。 输入范围: 对于%100%的数据,1 ≤ n,m ≤ 20,0 ≤马的坐标≤ 20。 输入案例: // 简单画个图就知道了 输入 6 6 3 3 输出 6 我的代码: 司空见惯的dp题目,用dfs肯定不是mle就是tle,不过我还是用...

qq_28033719的博客 522

Windows Docker Desktop部署MaxKB详细教程

MaxKB(Max Knowledge Base)是一款基于大语言模型(LLM)和检索增强生成(RAG)技术的开源知识库问答系统,旨在帮助企业、教育机构及研究组织高效管理知识并提供智能问答服务。

猿小白的博客 1376

使用Java解洛谷P1002过河卒

棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,A点 (0,0)、B 点 (n,m),同样马的位置坐标是需要给出的。 现在要求你计算出卒从A 点能够到达B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。 输入格式 一行四个正整数,分别表示B 点坐标和马的坐标。 输出格式 一个整数,表示所有的路径条数。...

abdu_marcello 507

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

P1002 过河卒(dp动态规划,洛谷,java)

洛谷链接:https://www.luogu.com.cn/problem/P1002 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=...

weixin_44685629的博客 340

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

洛谷 - P1002 [NOIP2002 普及组] 过河卒 [Java版]

题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点。卒行走的规则:可以向下、或者向右。同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,AA点(0, 0)(0,0)、BB点(n, m)(n,m),同样马的位置坐标是需要给出的。 现在要求你计算出卒从AA点能够到达BB点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。 输入格式 一行四个正整数,分别表示BB点坐标和...

qq_51026595的博客 517

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

洛谷JAVA实现 P1002 [NOIP2002 普及组] 过河卒

题目描述 棋盘上 A点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,A 点 (0, 0)(0,0)、B 点 (n, m)(n,m),同样马的位置坐标是需要给出的。 现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。 输入格式 一行四个正整数,分别表示 B 点坐标和马的坐标。 输出格式 一个整数

giantroit的博客 398

洛谷-p1002过河卒-java解题方法

p1002 过河卒 题目描述 棋盘上 AA 点有一个过河卒,需要走到目标 BB 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 CC 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示,AA 点 (0, 0)(0,0)、BB 点 (n, m)(n,m),同样马的位置坐标是需要给出的。 现在要求你计算出卒从 AA 点能够到达 BB 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。 输入格式 一行四个正整数,分别表示 BB

gudada010的博客 302

【洛谷】P1002 过河卒 (java,100,动态规划)

可能是太久没做题了,没信心,起初看到这道题,差点就归为不会的类型放弃了。 后面耐心的看,思考了会,好像不难,第一反应就是用递归(一条路走到黑的)思路做,输入测试样例,好像对了 信心满满的提交。 import java.util.Scanner; public class Main { static long count = 0; static int bx; static int by; static int n; static int m; p...

北海_南风 617

【提问】求大佬优化我的代码!洛谷P1002过河卒 递归解法java

【代码】【提问】求大佬优化我的代码!洛谷P1002过河卒 递归解法java。

weixin_74948120的博客 120

3327:练55.2 跳绳比赛

3327:练55.2 跳绳比赛

青少年趣味编程 1170
上一篇: 洛谷 P1001 A + B Problem Java
下一篇: 洛谷 P1003 铺地毯 Java
NoahCode
博客等级 码龄9年 24粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值