国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

藍橋杯 第39級臺階 (dfs and 回溯)

2019-11-08 02:13:11
字體:
來源:轉載
供稿:網友

題目標題: 第39級臺階    小明剛剛看完電影《第39級臺階》,離開電影院的時候,他數了數礼堂前的臺階數,恰好是39級!    站在臺階前,他突然又想著一個問題:    如果我每一步只能邁上1個或2個臺階。先邁左腳,然后左右交替,最后一步是邁右腳,也就是說一共要走偶數步。那么,上完39級臺階,有多少種不同的上法呢?    請你利用計算機的優勢,幫助小明尋找答案。要求提交的是一個整數。注意:不要提交解答過程,或其它的輔助說明文字。

答案 : 51167078

方法 一 是  簡單dfs 深搜  因為不是步數 要么是1  要么是2

#include<stdio.h>int res;void dfs(int step,int k){	if(k<0)		return;	if(step%2==0&&k==0)	{		res++;		return;	}	for(int i=1;i<=2;i++)  //dfs  深搜 要么是 1 步 要么是兩步 	{		dfs(k-i,step+1); 	}}int main(){	dfs(39,0);	PRintf("%d/n",res);}

方法二 是 回溯     要考慮到 必須是前37臺階才能走兩步  38 后 只能走一步

#include<stdio.h>int sum=0;//記錄為走的步數 int x=0;int y=0;int res=0;void bbs(int num){	if(num==39)	{		if(sum%2==0)			res++;		return;	}	else	{		sum++;num++; //走一步 		bbs(num);//回溯 		sum--;num--;//還原		if(num<=37)//只有在 37 之前才能走兩步 		{			sum++;num+=2;			bbs(num);			sum--;num-=2;		} 	} } int main(){	bbs(0);	printf("%d/n",res);	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舒城县| 平陆县| 安徽省| 镇安县| 云龙县| 曲周县| 嫩江县| 开平市| 壶关县| 任丘市| 青河县| 镇原县| 大埔区| 开阳县| 砀山县| 手游| 乐山市| 黑河市| 嵩明县| 上饶市| 民丰县| 梅河口市| 江口县| 凌云县| 灵武市| 广德县| 高安市| 延安市| 赞皇县| 赣州市| 自治县| 金川县| 新巴尔虎左旗| 望江县| 通辽市| 海原县| 海原县| 宁化县| 休宁县| 卓资县| 军事|