1、問題描述:乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。
例: 台階n=0 輸出:0
台階n=2 輸出:2
台階n=3 輸出:3
台階n=4 輸出:5
台階n=7 輸出:21
int step(inta)
return
b[a];
}int
main()
cout
<< "
跳上不同台階的方法數:
分別輸入台階數為4,5,6,7時跳台階的方式數為 5、8、13、21
2、問題描述:給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。
舉例:輸入:arr =[
[1,3,1
], [
1,5,1
], [
4,2,1]]
輸出:
7解釋: 因為路徑
1→3→1→1→1 的總和最小。
#include#define m 3測試輸出:#define n 4
intmain()
,, };
//cout << a[m - 1][n - 1] << endl;
int dp[m][n] ={};
dp[0][0] = a[0][0
];
for (int i = 1; i < m; i++)
dp[i][
0] =dp[i-1][0]+ a[i][0
];
for (int j = 1; j < n; j++)
dp[0][j] = dp[0][j - 1] + a[0
][j];
for (int i = 1; i < m; i++)
}cout
<< dp[m - 1][n - 1] <
}
3、(打家劫舍)問題描述:在⼀條直線上,有n個房屋,每個房屋中有數量不等的財寶,有⼀個盜 賊希望從房屋中盜取財寶,由於房屋中有報警器,如果同時從相鄰的兩個房屋中盜取財寶就會觸發報警器。問在不觸發報警器的前提 下,最多可獲取多少財寶?例如 [5,2,6,3,1,7],則選擇5,6,7
int rob(int *a,int樣例輸出:l)return dp[l - 1];}
}int
main()
cout
<< rob(a, l) <
}
偷取3+5+7為利益最大化選擇
4、問題描述:給定⼀個陣列,求這個陣列的連續⼦陣列中,最⼤的那⼀段的和。 如陣列[-2,1,-3,4,-1,2,1,-5,4] 的⼦段 為:[-2,1]、[1,-3,4,-1]、[4,-1,2,1]、...、[-2,1,-3,4,-1,2,1,-5,4],和最⼤的是[4,-1,2,1],為6。
int getmax_sub(int *a,int樣例測試執行輸出:l)
return
max;
}int
main()
cout
<< getmax_sub(a, l) <
}
5、題⽬描述: 在⼀個由 0 和 1 組成的⼆維矩陣內,找到只包含 1 的最⼤正⽅形,並返回其⾯積。
例如:輸⼊:101
0010
1111
1111
1001
0輸出:
動態規劃練習
題目描述 給出兩個單詞word1和word2,計算出將word1 轉換為word2的最少操作次數。你總共三種操作方法 插入乙個字元 刪除乙個字元 替換乙個字元 include include include using namespace std int find min int x,int y,i...
動態規劃練習
題目描述 蘋果裝配問題,把乙個區域分成n m個小區域,其中每個區域有一定數量的蘋果,設左上角為0,0,右下角為n 1,m 1.從0,0開始出發,每經過乙個區域,就把該區域的蘋果全部收走,求一條路徑使得收穫的蘋果最多。include include using namespace std class ...
動態規劃練習 採藥
題目要求 採每一株藥都需要一些時間,每一株也有它自身的價值。一段時間內,可以採到一些草藥。在規定時間內讓採到的草藥的總價值最大。題目思路 此題為01揹包問題,令b i t 表示前i株藥材恰在t時間內採完獲得醉的價值,狀態轉移方程 b i t max 細節處理 進行空間優化 b t max 初始化時除...