格子问题 蓝桥杯
Posted mj1234
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了格子问题 蓝桥杯相关的知识,希望对你有一定的参考价值。
m*n的的方格中,起点在左上角,终点在右下角,从起点到终点,只能从上向下,从左向右走,问一共有多少种不同的走法。
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
解题思路:例如4*4的方格,从格子1走到15,所以第一步有两种走法,向下走一步到5,或者向右走一步到2,在2位置又有两种走法,实际上这与原问题区别只是起始坐标不同,递归解决。想象走到倒数第二步了,也就是15或者12的位置上,这时候就只有一种走法了,返回1。假设递归函数会超过网格的边界,返回0.
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
比如3*3的走格子方法:12369,12569,12589,14569,14589,14789,一共六种方法
代码:
#include<iostream>
using namespace std;
int steps(int x,int y,int m,int n){
if(x>m||y>n)
return 0;
if(x==m-1&&y==n)
return 1;
if(x==m&&y==n-1)
return 1;
return steps(x+1,y,m,n)+steps(x,y+1,m,n);
}
int main(){
int m,n;
cin>>m>>n;
cout<<steps(1,1,m,n)<<endl;
return 0;
}
以上是关于格子问题 蓝桥杯的主要内容,如果未能解决你的问题,请参考以下文章