【洛谷 P8707】[蓝桥杯 2020 省 AB1] 走方格 题解(动态规划)

[蓝桥杯 2020 省 AB1] 走方格

题目描述

在平面上有一些二维的点阵。

这些点的编号就像二维数组的编号一样,从上到下依次为第 1 1 1 至第 n n n 行,从左到右依次为第 1 1 1 至第 m m m 列,每一个点可以用行号和列号来表示。

现在有个人站在第 1 1 1 行第 1 1 1 列,要走到第 n n n 行第 m m m 列。只能向右或者向下走。

注意,如果行号和列数都是偶数,不能走入这一格中。

问有多少种方案。

输入格式

输入一行包含两个整数 n n n m m m

输出格式

输出一个整数,表示答案。

样例 #1

样例输入 #1

3 4

样例输出 #1

2

提示

1 ≤ n , m ≤ 30 1\le n,m\le30 1n,m30

蓝桥杯 2020 第一轮省赛 A 组 G 题(B 组 H 题)。


思路

首先,定义一个二维数组dp,其中dp[i][j]表示从网格的左上角(1,1)到当前位置(i,j)的路径数量。dp的大小为(N,N),其中N是一个预设的常数。

接着,从输入中读取网格的实际大小nmnm分别表示网格的行数和列数。

然后,初始化dp数组的第一行和第一列。由于只能向右或向下走,所以从(1,1)到第一行或第一列的任何位置都只有一种走法,所以将dp数组的第一行和第一列都设为1

易知状态转移方程:

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

接下来,使用两个嵌套的for循环遍历dp数组的剩余部分。对于每个位置(i,j),如果行号i和列数j都是偶数,则不能走入这个位置,所以将dp[i][j]设为0。否则,从(1,1)(i,j)的路径数量是从(1,1)(i-1,j)的路径数量(即dp[i-1][j])和从(1,1)(i,j-1)的路径数量(即dp[i][j-1])的和。这是因为只能向右或向下走,所以(i,j)只可能从(i-1,j)(i,j-1)到达。

最后,输出dp[n][m],即从(1,1)(n,m)的路径数量。

注意

如果行号和列数都是偶数,不能走入这一格中。


AC代码

#include <algorithm>
#include <iostream>
#define mp make_pair
#define AUTHOR "HEX9CF"
using namespace std;
using ll = long long;const int N = 1e4 + 7;
const int INF = 0x3f3f3f3f;
const ll MOD = 1e9 + 7;int n, m;
int dp[N][N];int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m;dp[1][1] = 1;for (int i = 2; i <= n; i++) {dp[i][1] = 1;}for (int j = 2; j <= m; j++) {dp[1][j] = 1;}for (int i = 2; i <= n; i++) {for (int j = 2; j <= m; j++) {if (!((i % 2) || (j % 2))) {// 如果行号和列数都是偶数,不能走入这一格中。dp[i][j] = 0;continue;}dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}cout << dp[n][m] << "\n";return 0;
}

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

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

相关文章

深入浅出运维可观测工具(四):如何使用eBPF绘制网络拓扑图

哈喽~又到了我们技术分享环节了。eBPF这个系列自分享以来收到了很多朋友的喜欢&#xff0c;真是让博主又惊又喜&#xff0c;感谢大家的支持。话不多说&#xff0c;今天我们将对如何使用eBPF绘制网络拓扑图做一篇分享&#xff0c;文章较长&#xff0c;干货较多&#xff0c;大家可…

R语言lavaan结构方程模型在复杂网络分析中的科研技术新趋势

此外&#xff0c;我们还将深入探讨R语言的基础知识、结构方程模型的基本原理、lavaan程序包的使用方法等内容。无论是潜变量分析、复合变量分析&#xff0c;还是非线性/非正态/缺失数据处理、分类变量分析、分组数据处理等复杂问题&#xff0c;我们都将一一为您解析。 希望通过…

微服务获取登录用户Id与单体服务下获取用户Id对比(黑马头条Day03)

前置声明 当前前后端分离开发项目中&#xff0c;后端某个请求向具体某个数据库中的多个表插入数据时&#xff0c;经常需要使用到当前登录用户的Id&#xff08;唯一标识&#xff09;。在当前用户线程下以实现变量共享&#xff0c;同时为了避免不同用户线程之间操作变量的影响&am…

【机器学习300问】28、什么是决策树?

〇、两个预测任务 &#xff08;1&#xff09;任务一&#xff1a;银行预测偿还能力 当前&#xff0c;某银行正致力于发掘潜在的放贷用户。他们掌握了每位用户的三个关键特征&#xff1a;房产状况、婚姻状况以及年收入。此外&#xff0c;银行还拥有过往这些用户的债务偿还能力的…

蓝桥杯简单题,公司名称

题目链接&#xff08;需要登录&#xff09; #include <iostream> #include <cstring> #include <algorithm> using namespace std; bool lanqiao(string str,int len){ sort(str.begin(),str.end());//对str按照ascii排序if(str.find("Laainoq")s…

题目 1825: 蓝桥杯-穿越雷区

题目描述: X星的坦克战车很奇怪&#xff0c;它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转&#xff0c;否则将报废。 某坦克需要从A区到B区去&#xff08;A&#xff0c;B区本身是安全区&#xff0c;没有正能量或负能量特征&#xff09;&#xff0c;怎样走才能路…

安卓Java面试题11-20

🔥 11、Android本身的API并未声明会抛出异常,则其在运行时有无可能抛出runtime异常,如何解决?🔥 会,比如nullpointerException。我遇到过,比如textview.setText()时,textview没有初始化。会导致程序无法正常运行出现forceclose。打开控制台查看logcat信息找出异常信…

React 从0到1构建企业级框架基于Antd Designer

一、 create-react-app 创建 cms-front 二、 删除不必须要的文件形成如下结构 1. React版本为17版本 public 文件夹下保留 favicon.ico 偏爱图标index.html资源文件 2.src 保留 index.js 入口文件和app.js(基于spa原则)单文件即可 三、配置eslint 1. 安装 eslint. npm inst…

DataX及使用

DataX及使用 【一】DataX概述【二】DataX架构原理【1】设计理念【2】框架设计【3】运行流程【4】调度决策思路【5】DataX和Sqoop对比 【三】DataX部署【四】DataX上手【1】使用概述【2】配置文件格式【3】同步Mysql数据到HDFS 【五】DataX整合Springboot 【一】DataX概述 Data…

27.基于springboot + vue实现的前后端分离-网上租赁交易系统(项目 + 论文)

项目介绍 本课题是根据用户的需要以及网络的优势建立的一个基于Spring Boot的网上租贸系统&#xff0c;来满足用户网络商品租赁的需求。本网上租贸系统应用Java技术&#xff0c;MYSQL数据库存储数据&#xff0c;基于Spring Boot框架开发。在网站的整个开发过程中&#xff0c;首…

24 Linux PWM 驱动

一、PWM 驱动简介 其实在 stm32 中我们就学过了 PWM&#xff0c;这里就是再复习一下。PWM&#xff08;Pulse Width Modulation&#xff09;&#xff0c;称为脉宽调制&#xff0c;PWM 信号图如下&#xff1a; PWM 最关键的两个参数&#xff1a;频率和占空比。 频率是指单位时间内…

【数据结构】一、数据结构的基本概念

基本概念 数据是信息的载体&#xff0c;是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。 数据是计算机程序加工的原料。 数据元素是数据的基本单位。通常作为一个整体进行考虑和处理&#xff0c;用一个数据元素描述一个个体。一…

idea拉取代码报错

idea拉取代码报错下面错误 Update failed WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host k…

华清远见作业第四十三天——FreeRTOS(第一天)

1.总结keil5下载代码和编译代码需要注意的事项 点击魔法棒&#xff0c;在Debug项中&#xff0c;点击setting&#xff0c;检查有无设备连接&#xff0c;把Flash项中的Reset and Run勾选。 2.总结STM32Cubemx的使用方法和需要注意的事项 1、创建新项目 2、配置外设 3、配置时钟…

如何使用c++的PCL库 对Las点云进行重建

在 C 中对点云进行重建通常需要使用一些专门的库和算法。下面是一种常见的方法&#xff0c;使用 PCL&#xff08;点云库&#xff09;进行点云重建&#xff1a; 安装 PCL 库&#xff1a;首先&#xff0c;需要安装 PCL 库。可以在 PCL 的官方网站上找到安装指南和文档。 读取点云…

排序算法:插入排序和希尔排序

一、插入排序 1.基本原理 插入排序&#xff08;英语&#xff1a;Insertion Sort&#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上…

排序算法:冒泡排序和简单选择排序

一、冒泡排序 1.冒泡排序的基本原理 对存放原始数组的数据&#xff0c;按照从前往后的方向进行多次扫描&#xff0c;每次扫描都称为一趟。当发现相邻两个数据的大小次序不符合时&#xff0c;即将这两个数据进行互换&#xff0c;如果从小大小排序&#xff0c;这时较小的数据就…

第十八天-Scrapy爬虫框架实战(瓜子二手车)

1.创建scrapy项目 首先创建python项目&#xff0c;在项目命令行中执行 #安装依赖 pip3 install scrapy #创建scrapy项目 scrapy startproject scrapy_guazi_demo cd scrapy_guazi_demo scrapy genspider guazi guazi.com 2.item.py 声明字段 class ScrapyGuaziDemoItem(scra…

python将conda环境打入docker环境中

1.假设你本地已经安装好了conda相关的 ubuntu安装python以及conda-CSDN博客 并且已经创建启动过相关的环境&#xff0c;并且install了相关的包。 我本地的conda环境叫做,gptsovits_conda3 2.下载conda打包工具 conda install conda-pack pip install conda-pack 3.打包 con…

蓝桥杯day6队列-3.3

目录 1.约瑟夫环 1.注意&#xff01;q.push(q.front()); 2.机器翻译 3.小桥的神秘礼盒 4.餐厅排队 1.约瑟夫环 今天学习了队列的STL写法&#xff0c;来试试这个题。 #include<bits/stdc.h> using namespace std;int main() {int n,m;cin>>n>>m;queue&l…