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

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

【DP入門】超級臺階

2019-11-14 12:33:32
字體:
來源:轉載
供稿:網友

題目來自nyist第76題,如下:

描述

有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第m級,共有多少走法?注:規定從一級到一級有0種走法。輸入輸入數據首先包含一個整數n(1<=n<=100),表示測試實例的個數,然后是n行數據,每行包含一個整數m,(1<=m<=40), 表示樓梯的級數。輸出

對于每個測試實例,請輸出不同走法的數量。

這題可以用許多解法,DP遞推式:dp[i] = dp[i-1]+dp[i-2],其中dp數組為到達第i級階梯的走法i可以由i-1級跨一步或者i-2級跨兩步走來,所以達到第i級的走法等于兩者相加,由于本題有限定1到1級為0,并且,遞推式中需要已知i-2的dp值,所以可以先列出(手動賦值)1、2、3的dp值,然后用for循環求出dp值。本題采用打表后直接輸出的方法,可以減少復雜度,避免每次輸入一個m就重新算一次。

代碼如下:

#include <stdio.h>int dp[45]; int main(){	int m,i,n;	scanf("%d",&n);	dp[2] = 1;dp[1] = 0;dp[0]= 0;dp[3] = 2; 	for(i = 4;i<=41;i++)	{		dp[i] = dp[i-1]+dp[i-2];	}	while(n--)	{		scanf("%d",&m); 		PRintf("%d/n",dp[m]); 	}	return 0; } 有了遞推式,本題還可以用遞歸求解。有輸出可知本題就是斐波拉契數列。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹤山市| 沂水县| 景泰县| 曲水县| 吴忠市| 石泉县| 玛纳斯县| 太保市| 井陉县| 绥滨县| 英德市| 湘阴县| 甘德县| 定远县| 永寿县| 固安县| 涿鹿县| 邯郸市| 滁州市| 清原| 万荣县| 庆阳市| 公主岭市| 库车县| 西平县| 夏河县| 滨州市| 永泰县| 南平市| 黄梅县| 广元市| 秀山| 鄄城县| 福贡县| 潞城市| 云浮市| 湘乡市| 平潭县| 莫力| 措勤县| 石棉县|