【蓝桥杯】真题训练 2013年C++A组 题3 振兴中华

振兴中华 

 振兴中华

    小明参加了学校的趣味运动会,其中的一个项目是:跳格子。
    地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)

从我做起振
我做起振兴
做起振兴中
起振兴中华  

    比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要跳到“华”字结束。

    要求跳过的路线刚好构成“从我做起振兴中华”这句话。

    请你帮助小明算一算他一共有多少种可能的跳跃路线呢?

答案是一个整数,请通过浏览器直接提交该数字。
注意:不要提交解答过程,或其它辅助说明类的内容。

答案:35

 

题目解析

枚举

递归 、迭代 

递归抓住三个要点:找变化状态(参数)、重复的步骤(递归调用)、出口(结束条件)

这个题目中每一步向右或向下都是可以的,并且每次到达的新位置也还是向下或向右,那么这就是重复的步骤,变化的地方就是每次的坐标变化了,那么出口就是在横坐标或纵坐标到达边界时候就到达了出口可以结束返回了。

#include <iostream>
using namespace std;
//振兴中华

int f(int x, int y){	//状态
	//出口 
	if(x == 3 || y == 4){
		return 1;
	} 
	return f(x+1, y) + f(x, y+1);	//重复 
} 

int main(int argc, char** argv) {
	cout << f(0, 0) << endl; 
	return 0;
}

 这个题目不难,用这种递归的思路去解决很好理解,就是看到题目不要一开始就慌张了,在蓝桥杯比赛中,这种格子问题是很常见的,加油!

猜你喜欢

转载自blog.csdn.net/weixin_44566432/article/details/115088112