首页 > 其他 > 详细

格子问题 蓝桥杯

时间:2018-04-17 16:25:51      阅读:177      评论:0      收藏:0      [点我收藏+]

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; 
}

 

格子问题 蓝桥杯

原文:https://www.cnblogs.com/MJ1234/p/8867179.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!