本文最后更新于:7 分钟前
[蓝桥杯 2020 省 AB1] 走方格
题目描述
在平面上有一些二维的点阵。
这些点的编号就像二维数组的编号一样,从上到下依次为第 1 至第 n 行,从左到右依次为第 1至第 m 列,每一个点可以用行号和列号来表示。
现在有个人站在第 1行第 1列,要走到第 n行第 m列。只能向右或者向下走。
注意,如果行号和列数都是偶数,不能走入这一格中。
问有多少种方案。
输入格式
输入一行包含两个整数 n,m。
输出格式
输出一个整数,表示答案。
样例 #1
样例输入 #1
样例输出 #1
提示
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; }
|