每日OJ题_牛客_DP13[NOIP2002 普及组]过河卒_路径dp_C++_Java

目录

牛客_DP13[NOIP2002 普及组]过河卒_路径dp

题目解析

C++代码1

C++代码2

Java代码


牛客_DP13[NOIP2002 普及组]过河卒_路径dp

[NOIP2002 普及组] 过河卒_牛客题霸_牛客网 (nowcoder.com)

描述:

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

棋盘用坐标表示,A 点 (0, 0)、B点(n,m),同样马的位置坐标是需要给出的。

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


题目解析

简单路径 dp 问题:相当于是有障碍物的路径类问题,标记走到障碍物上的方法数为 0 即可。

C++代码1

#include <iostream>
#include <ostream>
#include <vector>
using namespace std;
#define int long long // 66666666666666666666666666666666666666666666
signed main()
{// 把马吃了是不是后面的点就能走了?emmmint n = 0, m = 0, x = 0, y = 0;cin >> n >> m >> x >> y;// if (n == 1 || m == 1) // 边界处理// {// 	cout << 1 << endl;// 	return 0;// }// if (abs(m - x) + abs(n - y) == 3 && m != x && n != y)// {// 	cout << 0 << endl;// 	return 0;// }// vector<vector<int>> borad(n, vector<int>(m));vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0));for (int i = 0; i <= n; ++i){if (abs(i - x) + abs(0 - y) == 3 && i != x && 0 != y)break;if (x == i && y == 0) // 马也不能走!!!真服了break;dp[i][0] = 1;}for (int j = 0; j <= m; ++j){if (abs(0 - x) + abs(j - y) == 3 && 0 != x && j != y)break;if (x == 0 && y == j) // 马也不能走!!!真服了break;dp[0][j] = 1;}for (int i = 1; i <= n; ++i){for (int j = 1; j <= m; ++j){if (abs(i - x) + abs(j - y) == 3 && i != x && j != y)continue;if (x == i && y == j) // 马也不能走!!!真服了continue;dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}// for(int i = 0; i <= n; ++i) // DeBug:打印dp矩阵// {// for(int j = 0; j <= m; ++j)// {// cout << dp[i][j] << " ";// }// cout << endl;// }cout << dp[n][m] << endl;return 0;
}

C++代码2

#include <iostream>
#include <ostream>
#include <vector>
using namespace std;
#define int long long // 66666666666666666666666666666666666666666666
signed main()
{// 把马吃了是不是后面的点就能走了?emmmint n = 0, m = 0, x = 0, y = 0;cin >> n >> m >> x >> y;// if (n == 1 || m == 1) // 边界处理// {// 	cout << 1 << endl;// 	return 0;// }// if (abs(m - x) + abs(n - y) == 3 && m != x && n != y)// {// 	cout << 0 << endl;// 	return 0;// }// vector<vector<int>> borad(n, vector<int>(m));vector<vector<int>> dp(n + 2, vector<int>(m + 2, 0));// for (int i = 0; i <= n; ++i)// {// 	if (abs(i - x) + abs(0 - y) == 3 && i != x && 0 != y)// 		break;// 	if (x == i && y == 0) // 马也不能走!!!真服了// 		break;// 	dp[i][0] = 1;// }// for (int j = 0; j <= m; ++j)// {// 	if (abs(0 - x) + abs(j - y) == 3 && 0 != x && j != y)// 		break;// 	if (x == 0 && y == j) // 马也不能走!!!真服了// 		break;// 	dp[0][j] = 1;// }dp[0][1] = 1;x += 1, y += 1;for (int i = 1; i <= n + 1; ++i){for (int j = 1; j <= m + 1; ++j){if (abs(i - x) + abs(j - y) == 3 && i != x && j != y)continue;if (x == i && y == j) // 马也不能走!!!真服了continue;dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}// for(int i = 0; i <= n; ++i) // DeBug:打印dp矩阵// {// for(int j = 0; j <= m; ++j)// {// cout << dp[i][j] << " ";// }// cout << endl;// }cout << dp[n + 1][m + 1] << endl;return 0;
}

Java代码

import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt(), m = in.nextInt(), x = in.nextInt(), y = in.nextInt();long[][] dp = new long[n + 2][m + 2];dp[0][1] = 1;x += 1; y += 1;for(int i = 1; i <= n + 1; i++){for(int j = 1; j <= m + 1; j++){if(i != x && j != y && Math.abs(i - x) + Math.abs(j - y) == 3|| (i == x && j == y)){dp[i][j] = 0;}else{dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}}System.out.println(dp[n + 1][m + 1]);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

业务封装与映射 -- 业务映射路径

为什么需要封装映射 OTN网络客户业务种类繁多&#xff08;例如SDH、以太网、视频&#xff09;&#xff0c;且业务大小不一&#xff08;例如STM-1、STM-4、STM-16&#xff09;&#xff0c;为了便于传输、管理客户业务&#xff0c;保证设备间互联互通&#xff0c;ITU-T定义了OTN接…

《深度学习》OpenCV 角点检测、特征提取SIFT 原理及案例解析

目录 一、角点检测 1、什么是角点检测 2、检测流程 1&#xff09;输入图像 2&#xff09;图像预处理 3&#xff09;特征提取 4&#xff09;角点检测 5&#xff09;角点定位和标记 6&#xff09;角点筛选或后处理&#xff08;可选&#xff09; 7&#xff09;输出结果 3、邻域…

物联网智能项目全面解析

目录 引言 一、物联网概述 1.1 什么是物联网 1.2 物联网的历史与发展 二、物联网智能项目分类 三、关键组件与技术 3.1 传感器和执行器 3.2 连接技术 3.3 数据处理与分析 3.4 用户界面 四、物联网智能项目案例分析 4.1 智能家居 4.2 智慧城市 4.3 工业物联网 4.4…

前端编程艺术(2)----CSS

目录 1.CSS 2.CSS引入 3.选择器 1.标签选择器 2.类选择器 3.id选择器 4.属性选择器 5.后代选择器 5.直接子元素选择器 6.伪类选择器 链接相关 动态伪类 结构化伪类 否定伪类 其他伪类 UI元素状态伪类 4.字体 1.font-family 2.font-size 3.font-style 4.fo…

C++之多线程

前言 多线程和多进程是并发编程的两个核心概念,它们在现代计算中都非常重要,尤其是在需要处理大量数据、提高程序性能和响应能力的场景中。 多线程的重要性: 资源利用率:多线程可以在单个进程中同时执行多个任务,这可以更有效地利用CPU资源,特别是在多核处理器上。 性…

奔驰EQS450suv升级增强AR抬头显示HUD案例分享

以下是奔驰 EQS450 SUV 升级增强版 AR 抬头显示的一般改装案例步骤及相关信息&#xff1a; 配件&#xff1a;通常包括显示屏、仪表模块、饰板等。 安装步骤&#xff1a; 1. 拆下中控的仪表。 2. 在仪表上预留位置切割出合适的孔位&#xff0c;用于安装显示器。 3. 将显示器…

(IDEA)spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案

系列文章目录 文章目录 系列文章目录一、&#xff08;IDEA&#xff09;spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案1.资料 一、&#xff08;IDEA&#xff09;spring项目导入本地jar包方法和项目打包时找不到引入本地jar包的问题解决方案 1.资料…

Python案例--水仙花数的探索之旅

一、引言 水仙花数&#xff0c;也称为阿姆斯特朗数&#xff0c;是一种特殊的三位数&#xff0c;其各位数字的立方和等于其本身。例如&#xff0c;153就是一个水仙花数&#xff0c;因为 135333153135333153。这种数字的发现不仅展示了数字的内在美&#xff0c;也激发了人们对数…

大学学校用电安全远程监测预警系统

1.概述&#xff1a; 该系统是基于移动互联网、云计算技术&#xff0c;通过物联网传感终端&#xff0c;将办公建筑、学校、医院、工厂、体育场馆、宾馆、福利院等人员密集场所的电气安全数据&#xff0c;实时传输至安全用申管理服务器&#xff0c;为用户提供不间断的数据跟踪&a…

五子棋双人对战项目(4)——匹配模块(解读代码)

目录 一、约定前后端交互接口的参数 1、websocket连接路径 2、构造请求、响应对象 二、用户在线状态管理 三、房间管理 1、房间类&#xff1a; 2、房间管理器&#xff1a; 四、匹配器(Matcher) 1、玩家实力划分 2、加入匹配队列&#xff08;add&#xff09; 3、移除…

解决ModuleNotFoundError: No module named ‘torchcrf‘

运行深度学习程序时候&#xff0c;出现报错&#xff1a;ModuleNotFoundError: No module named torchcrf 将 from torchcrf import CRF 改为 from TorchCRF import CRF

C#案例 | 基于C#语言在Excel中进行二次开发(一):简单系统搭建:打印输出“Hello Excel C#”

基于C#语言在Excel中进行二次开发&#xff08;一&#xff09;&#xff1a;简单系统搭建&#xff1a;打印输出”Hello Excel & C#” 实现效果第一步&#xff1a;前期准备第二步&#xff1a;打开VS 2022&#xff0c;创建项目第三步&#xff1a;程序界面设计 实现效果 在Exce…

《蓝桥杯算法入门》(C/C++、Java、Python三个版本)24年10月出版

推荐&#xff1a;《算法竞赛》&#xff0c;算法竞赛大全书&#xff0c;网购&#xff1a;京东 天猫  当当 文章目录 《蓝桥杯算法入门》内容简介本书读者对象作者简介联系与交流《蓝桥杯算法入门 C/C》版目录 《蓝桥杯算法入门 Java》版目录 《蓝桥杯算法入门 Python》版目录 …

STM32器件支持包安装,STLINK/JLINK驱动安装

一、支持包安装 1、离线安装 先下载支持包之后&#xff0c;再进行安装。如下图要安装STM32F1系列&#xff0c;双击 出现如下&#xff0c;会自动锁定安装路径&#xff0c;然后点击下一步&#xff0c;直接安装。 2、在线安装 首先需要电脑联网。如下。先点击第一个红框绿色按钮…

【EXCEL数据处理】000011 案列 EXCEL带有三角形图标的单元格转换,和文本日期格式转换。

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【EXCEL数据处理】000011 案列 EXCEL带有三角形图标的单元格转换。使用…

[uni-app]小兔鲜-04推荐+分类+详情

热门推荐 新建热门推荐组件, 动态设置组件的标题 <template><!-- 推荐专区 --><view class"panel hot"><view class"item" v-for"item in list" :key"item.id">... ...<navigator hover-class"none&…

Pikachu-Cross-Site Scripting-DOM型xss

DOM型xss DOM型XSS漏洞是一种特殊类型的XSS,是基于文档对象模型 Document Object Model (DOM)的一种漏洞。是一个与平台、编程语言无关的接口&#xff0c;它允许程序或脚本动态地访问和更新文档内容、结构和样式&#xff0c;处理后的结果能够成为显示页面的一部分。 dom就是一…

物联网将如何影响全球商业?

互联网使人们能够交流&#xff0c;企业能够全天候不间断地跨洋跨洲持续运营。它重塑、颠覆并催生了新的产业&#xff0c;改变了人类与世界互动的方式。互联网曾经仅仅是一种方便、快捷、廉价的向世界各地发送信息的方式&#xff0c;而现在&#xff0c;只需打开或关闭任何连接到…

thinkphp6入门(25)-- 分组查询 GROUP_CONCAT

假设表名为 user_courses&#xff0c;字段为 user_id 和 course_name&#xff0c;存储每个用户选修的课程&#xff0c;想查询每个学生选修的所有课程 SQL 原生查询 SELECT user_id, GROUP_CONCAT(course_name) as courses FROM user_courses GROUP BY user_id; ThinkPHP 代码…

汇编语言知识(王爽第四版)

汇编语言&#xff0c;当然&#xff0c;我们学习是在c语言的基础上&#xff0c;那么&#xff0c;我们就先复习一下c语言的知识 C语言的基础&#xff0c;进制转换必不可少 数组&#xff0c;函数…… 接下来&#xff0c;我们学习了数据结构&#xff1a;顺序表&#xff0c;链表&…