码迷,mamicode.com
首页 > 其他好文 > 详细

格子问题 蓝桥杯

时间:2018-04-17 16:53:21      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:eps   space   思路   int   std   方法   nbsp   turn   ret   

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

 

格子问题 蓝桥杯

标签:eps   space   思路   int   std   方法   nbsp   turn   ret   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!