【洛谷 P1644】跳马问题 题解(动态规划)

跳马问题

题目背景

在爱与愁的故事第一弹第三章出来前先练练四道基本的回溯/搜索题吧……

题目描述

中国象棋半张棋盘如图 1 1 1 所示。马自左下角 ( 0 , 0 ) (0,0) (0,0) 向右上角 ( m , n ) (m,n) (m,n) 跳。规定只能往右跳,不准往左跳。比如图 1 1 1 中所示为一种跳行路线,并将路径总数打印出来。

输入格式

只有一行:两个数 n n n m m m

输出格式

只有一个数:总方案数 t o t a l total total

样例 #1

样例输入 #1

4 8

样例输出 #1

37

提示

对于 100 % 100\% 100% 的数据: n , m ≤ 18 n, m\leq 18 n,m18


思路

马只能走日字形,即向右跳两格再向上或向下跳一格,或向下跳两格再向左或向右跳一格。

推导出状态转移方程:

dp[i][j] = dp[i - 1][j + 2] + dp[i - 1][j - 2] + dp[i - 2][j + 1] + dp[i - 2][j - 1];

注意:

  1. 输入是 n、m ,终点是(m,n)。
  2. 只能往右跳,不准往左跳。所以马不可能到达 y 轴,但是可以到达 x 轴。因此循环变量 i 从 1 开始,j 从 0 开始。
  3. 在对数组进行操作时需要判断是否越界。

AC代码

#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;const int N = 55;int dp[N][N];int main()
{int n, m;cin >> n >> m;dp[0][0] = 1;for (int i = 1; i <= m; i++){for (int j = 0; j <= n; j++){if (i > 0){dp[i][j] += dp[i - 1][j + 2];if (j > 1){dp[i][j] += dp[i - 1][j - 2];}}if (i > 1){dp[i][j] += dp[i - 2][j + 1];if (j > 0){dp[i][j] += dp[i - 2][j - 1];}}// cout << i << " " << j << " " << dp[i][j] << endl;}}cout << dp[m][n] << endl;return 0;
}

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

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

相关文章

Spring Cloud Alibaba Gateway 简单使用

文章目录 Spring Cloud Alibaba Gateway1.Gateway简介2. 流量网关和服务网关的区别3. Spring Cloud Gateway 网关的搭建3.1 Spring Cloud Gateway 配置项的说明3.2 依赖导入3.3 配置文件 Spring Cloud Alibaba Gateway 1.Gateway简介 Spring Cloud Gateway是一个基于Spring F…

变量和配置文件

文章目录 变量和配置文件1. 变量1.1 系统变量1.1.1 系统变量分类1.1.2 查看系统变量1.1.3 修改系统变量的值 1.2 用户变量1.2.1 用户变量分类1.2.2 会话用户变量1.2.3 局部变量1.2.4 会话用户变量月局部变量对比 2. 配置文件的使用2.1 配置文件格式2.2 启动命令与选项组2.3 特定…

安卓逆向 - EdXposed LSPosed VirtualXposed

一、引言 接上篇&#xff1a;安卓逆向 - Xposed入门教程_小馒头yy的博客-CSDN博客 我们介绍了Xposed入门安装使用&#xff0c;但是只支持到Android 8&#xff0c;并且安装模块需要重启。今天我们来看看Xposed的其他版本。 二、各种Xposed框架对比 1、Xposed 只支持到安卓8&…

Linux基础指令(五)

目录 前言1. 打包和压缩1.1 是什么1.2 为什么1.3 怎么办&#xff1f; 2. zip & unzip3. tar 指令结语&#xff1a; 前言 欢迎各位伙伴来到学习 Linux 指令的 第五天&#xff01;&#xff01;&#xff01; 在上一篇文章 Linux基本指令(四) 当中&#xff0c;我们学习了 fin…

软考高级架构师下篇-17安全架构设计理论与实践

目录 1. 引言信息安全面临的威胁2. 安全体系架构的范围3.典型安全模型4.信息安全整体架构设计5.数据库系统安全设计6.系统架构脆弱性分析7.安全架构设计实践8. 前文回顾1. 引言 随着科技的发展,信息系统的安全受到诸多方面的威胁,设计信息系统安全架构需要从各个方面考虑,这…

C++核心编程

本阶段主要针对C面向对象编程技术做详细讲解&#xff0c;探讨C中的核心和精髓。 1 内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的 全局区&#xff1a;存放全局变量和静态变量…

总结 HTTP 协议的基本格式和 fiddler 的用法

HTTP基本格式 HTTP协议也是日常开发中非常常用的的一种协议&#xff0c;在众多协议栈里HTTP可能是实际开发中用的最多的。 注意 这里说的HTTP是指HTTP1以及HTTP2&#xff0c;他们都是基于TCP协议的&#xff0c;注意&#xff1a;如今最新版的HTTP3是基于UDP的。 但如今在互联网…

SQL server 创建存储过程

SQL Server如何创建存储过程 存储过程&#xff1a; 可以理解为完成特定功能的一组 SQL 语句集&#xff0c;存储在数据库中&#xff0c;经过第一次编译&#xff0c;之后的运行不需要再次编译&#xff0c;用户通过指定存储过程的名字并给出参数&#xff08;如果该存储过程带有参数…

常用数据库validationQuery语句

常用数据库validationQuery语句 validationQuery是用来验证数据库连接的查询语句&#xff0c;这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句&#xff0c; 下表中收集了几种常见数据库的validationQuery。DataBase validationQueryhsqldb …

Linus Torvalds接受来自微软的Linux Hyper-V升级

微软最近推送了一些变更&#xff0c;旨在改进即将发布的 Linux 内核 6.6 版本对 Hyper-V 的支持。这些改进包括在 Hyper-V 上支持 AMD SEV-SNP guest 和 Intel TDX guest。除了这两项&#xff0c;还有其他一些升级&#xff0c;如改进了 VMBus 驱动程序中的 ACPI&#xff08;高级…

怒刷LeetCode的第15天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;哈希表双向链表 方法二&#xff1a;TreeMap 方法三&#xff1a;双哈希表 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;二分查找 方法二&#xff1a;线性搜索 方法三&#xff1a;Arrays类的b…

C语言结构体的一些鲜为人知的小秘密

目录 一、结构体内存对齐规则&#xff1a; 1.1范例 1.2结构体内存对齐规则 1.3自定义默认对齐数 二、位段 2.1什么是位段 2.2位段的内存分配 2.3位段的不足 三、枚举和联合体 3.1枚举 3.1.1枚举类型的定义 3.1.2枚举类型的使用 3.2联合体 3.2.1联合体的定义 3.…

IDEA新建.xml文件显示为普通文本

情况如下&#xff1a; 1. 在XML文件中添加*.xml的文件名模式 2. 在文本中&#xff0c;选中*.xml进行删除

顺序读写函数的介绍:fscanf fprintf

目录 函数介绍&#xff1a; fprintf&#xff1a; 将结构体变量s的成员列表内容写入文件中&#xff1a; 文件效果&#xff1a;已经进行了格式化&#xff0c;3.140000是最明显的效果&#xff0c;因为float需要补齐0来补充精度 和printf的对比&#xff1a; 不同之处&#xff…

mac 解决 vscode 权限不足问题,Insufficient permissions

commod 空格&#xff0c;输入终端并打开写入指令 sudo chown -R xxxxxx1 xxxxx2&#xff08;例如我的sudo chown -R admin Desktop&#xff0c;具体参数查看下方&#xff09; x1: 用户名&#xff0c;可通过左上角查看 x2: 目标文件夹。可以另起一个终端&#xff0c;用cd 和 l…

Java函数式接口(Consumer、Function、Predicate、Supplier)详解及代码示例

函数式接口 java.util.function : Consumer :消费型函数接口 void accept(T t) Function :函数型接口 R apply(T t) Predicate :判断型接口 boolean test(T t) Supplier :供给型接口 T get() Consumer - 消费型函数接口 该接口代表了一个接受一个参数并且不返回结果的操作。…

【MySql】2- 基础篇(下)

文章目录 1. MySQL锁1. 1 全局锁1. 2 表级锁1. 3 行锁1. 3 .1 两阶段锁1. 3 .2 死锁和死锁检测 2. 事务是否是隔离的?2.1 快照在MVCC中如何工作 1. MySQL锁 数据库锁设计的初衷是处理并发问题。作为多用户共享的资源&#xff0c;当出现并发访问的时候&#xff0c;数据库需要合…

CCF-CSP真题《202305-2 矩阵运算》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看&#xff1a;CCF-CSP真题附题解大全 试题编号&#xff1a;202305-2试题名称&#xff1a;矩阵运算时间限制&#xff1a;5.0s内存限制&#xff1a;512.0MB问题描述&#xff1a; 题目背景 Softmax(QKTd)V 是 Transformer 中注意力模块的…

甲骨文创新中心与正初为职教集团达成人才培养合作,探索数实结合产教融合模式

2023年9月20日&#xff0c;甲骨文&#xff08;南京&#xff09;人工智能创新中心&#xff08;以下简称“甲骨文创新中心”&#xff09;与正初为职教集团在南京举行了战略合作签约仪式。甲骨文创新中心正式宣布和正初为职教集团达成职业教育数实结合产教融合合作协议&#xff0c…

(十一)VBA常用基础知识:worksheet的各种操作之sheet删除

当前sheet确认 2.Sheets(1).Delete Sub Hello()8 Sheets(1).DeleteSheets(1).Delete End Sub实验得知&#xff0c; Sheets(1).Delete删除的是最左边的sheet 另外&#xff0c;因为有弹出提示信息的确认框&#xff0c;这个在代码执行时&#xff0c;会导致还需要手动点击一下&a…