这题非常简单。
题目如下:
(链接:P8707 [蓝桥杯 2020 省 AB1] 走方格 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn))
在平面上有一些二维的点阵。
这些点的编号就像二维数组的编号一样,从上到下依次为第 1至第 n 行,从左到右依次为第 1至第 m 列,每一个点可以用行号和列号来表示。
现在有个人站在第 11 行第 11 列,要走到第 n 行第 m 列。只能向右或者向下走。
注意,如果行号和列数都是偶数,不能走入这一格中。
问有多少种方案。
输入格式
输入一行包含两个整数 n,m。
输出格式
输出一个整数,表示答案。
输入输出样例
输入
3 4输出
2说明/提示
1≤n,m≤30。
蓝桥杯 2020 第一轮省赛 A 组 G 题(B 组 H 题)。
这题为什么简单?
因为我们只需要做好分类讨论,外加一点点的递归思想即可;
即,f(x,y)=???+???;
从代码可见只需讨论,x和y的奇偶即可;
(别问为什么不讨论x,y都是偶数的情况,请看题目。)
总之,代码如下:
#include<bits/stdc++.h>
using namespace std;
int solve4(int x,int y){
if (x==1 || y==1){
return 1;
}
else{
if (x%2==1&&y%2==1){
return solve4(x-1,y) + solve4(x,y-1);
}
else if (x%2==0&&y%2==1){
return solve4(x-1,y);
}
else if (x%2==1&&y%2==0){
return solve4(x,y-1);
}
}
}
int main()
{ int a,b;
cin>>a>>b;
cout<<solve4(a,b);
return 0;
}
如果,有大佬认为代码有什么不妥之处,欢迎评论区指教我这个小白。