当前位置: 首页 > news >正文

动态规划——炮兵回城【集训笔记】

题目描述

游戏盘面是一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。
游戏结束盘上只剩下一枚炮兵没有回到城池中,而兵棋恰好在盘面的左下角,它需要移动到右上角的城池中,游戏规定只能向上或向右移动,炮兵从左下角的方格中移动到右上角的方格中,每步移动一个方格。始终在方格矩阵内移动,请你计算出不同的移动路线的数目。
对于1行1列的方格矩阵,炮兵原地移动,移动路线数为1;对于1行2列(或2行1列)的方格矩阵,炮兵只需一次向右(或向上)移动,移动路线数也为1……对于一个2行3列的方格矩阵,如下所示:
(2,1) (2,2) (2,3)
(1,1) (1,2) (1,3)
炮兵共有3种移动路线:
路线1:(1,1) → (1,2) → (1,3) → (2,3)
路线2:(1,1) → (1,2) → (2,2) → (2,3)
路线3:(1,1) → (2,1) → (2,2) → (2,3)

输入

输入只有一行,包括两个整数m和n(0 < m+n ≤ 20),代表方格矩阵的行数和列数,m、n之间用空格隔开。

输出

输出只有一行,为不同的移动路线的数目。

样例输入1
2 3
样例输出1
3
提示/说明
标签
普及 其他 动态规划基础
动规的普通方法不是最优的
标数法是最优的
#include<iostream>
using namespace std;;
int main()
{int m,n;int a[20][20];cin>>m>>n;a[0][0]=0;for(int i=1; i<=m; i++){for(int j=1; j<=n; j++){if(i==1||j==1){a[i][j]=1;continue;}a[i][j]=a[i-1][j]+a[i][j-1];}}cout<<a[m][n];return 0;
}

http://www.lryc.cn/news/287663.html

相关文章:

  • 低成本扫码点餐:1000元全包
  • 五款焊在电脑上的效率软件
  • 小程序样例3:根据日历创建待办事项
  • 计算机设计大赛 协同过滤电影推荐系统
  • docker下安装rabbitmq
  • 量子网络是什么
  • 使用javadoc生成maven项目的文档
  • 移动端 h5-table react版本支持虚拟列表
  • 解决Windows系统本地端口被占用的问题
  • (超全七大错误)Invalid bound statement (not found): com.xxx.dao.xxxDao.add
  • 【操作系统】实验八 proc文件系统
  • 基于RMF的信贷风控标签客户分层管理
  • 【MySQL】如何通过DDL去创建和修改员工信息表
  • Spring 事务原理一
  • creo草绘3个实例学习笔记
  • Modern C++ std::move的实现原理
  • 爬虫工作量由小到大的思维转变---<第四十章 Scrapy Redis 实现IP代理池管理的最佳实践>
  • C# 实现 XOR 密码
  • 【Web前端开发基础】CSS3之空间转换和动画
  • Go实现一个简单的烟花秀效果(附带源码)
  • 【数学建模】插值与拟合
  • 全卷积网络:革新图像分析
  • ubuntu20.04 格式化 硬盘 扩展硬盘GParted
  • docker的资源限制(cgroup)
  • ChatGPT与文心一言:应用示例与体验比较
  • 紫光展锐T760_芯片性能介绍_展锐T760安卓核心板定制
  • 从动力系统研究看当今数学界
  • 【征服redis15】分布式锁的功能与整体设计方案
  • MATLAB中实现机械臂逆运动学求解的方法之一是使用阻尼最小二乘法
  • 2024.1.24 GNSS 学习笔记