藍橋杯—振興中華

小明參加了學校的趣味運動會,其中的一個項目是:跳格子。
地上畫着一些格子,每個格子裏寫一個字,如下所示:

比賽時,先站在左上角的寫着“從”字的格子裏,可以橫向或縱向跳到相鄰的格子裏,但不能跳到對角的格子或其它位置。一直要跳到“華”字結束。要求跳過的路線剛好構成“從我做起振興中華”這句話。請你幫助小明算一算他一共有多少種可能的跳躍路線呢?

雖然說這到題都可以口算出來,但是它還是讓我再次體會到了遞歸的強大

本題一共三種操作:①向左跳 ②向下跳 ③當達到邊界(下邊界和右邊界)時就只能延邊界走到“華”字了

#include<iostream>
using namespace std;
int fun(int x,int y){
	if(x==3||y==4)return 1;  //走到邊界時,只能沿着邊界走到終點了,返回一種結果
	return fun(x+1,y)+fun(x,y+1);  //分別把向下走和向右走這兩種走法的數量加起來
}
int main(){
	cout<<fun(0,0);  //起點是第一行第一列
	return 0;
}

遞歸的效果圖(以“從我做起”爲例):

                                                                                    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章