走方格

本文最后更新于:7 分钟前

[蓝桥杯 2020 省 AB1] 走方格

题目描述

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

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

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

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

问有多少种方案。

输入格式

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

输出格式

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

样例 #1

样例输入 #1

1
3 4

样例输出 #1

1
2

提示

1<=n.m<=30。

理解

典型的动态规划,每次模拟从左往右走和从上往下走两种状态,注意判断行号和列号都是偶数层时,则跳过。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include<cstdio>
#include <sstream>
#include<algorithm>
#include<cmath>
#include<string>
#include<set>

using namespace std;

int m,n;
int road[35][35];
int main()
{
cin>>m>>n;
road[1][1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i%2==0&&j%2==0)continue;
road[i][j]+=road[i][j-1];//从左往右走
road[i][j]+=road[i-1][j];//从上往下走
}
}
cout<<road[n][m]<<endl;
return 0;
}


走方格
http://example.com/2023/04/24/走方格/
作者
zzh
发布于
2023年4月24日
更新于
2023年4月25日
许可协议
原文链接: HTTPS://ZHANGZHIHAO-BLOG.GITHUB.IO
版权声明: 转载请注明出处!