[蓝桥杯][算法提高VIP]夺宝奇兵-dp
生活随笔
收集整理的這篇文章主要介紹了
[蓝桥杯][算法提高VIP]夺宝奇兵-dp
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
在一座山上,有很多很多珠寶,它們散落在山底通往山頂?shù)拿織l道路上,不同道路上的珠寶的數(shù)目也各不相同.下圖為一張藏寶地圖:
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
”奪寶奇兵”從山下出發(fā),到達山頂,如何選路才能得到最多的珠寶呢?在上圖所示例子中,按照5-> 7-> 8-> 3-> 7的順序,將得到最大值30
輸入
第一行正整數(shù)N(100> =N> 1),表示山的高度
接下來有N行非負(fù)整數(shù),第i行有i個整數(shù)(1< =i< =N),表示山的第i層上從左到右每條路上的珠寶數(shù)目
輸出
一個整數(shù),表示從山底到山頂?shù)乃艿玫降闹閷毜淖畲髷?shù)目.
樣例輸入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
樣例輸出
30
解題思路:
題意不清,實則是,上一條路能選他對應(yīng)下一條和他下一條的右邊那一條。
代碼如下:
#include <iostream> using namespace std; const int N = 110; int mp[N][N]; int dp[N][N]; int n;int main() {cin >> n;for (int i = 1; i <= n; i++)for (int j = 1; j <= i; j++)cin >> mp[i][j];for (int i = 1; i <= n; i++) {dp[n][i] = mp[n][i];//初始化}for (int i = n - 1; i >= 1; i--)for (int j = 1; j <= i; j++) {dp[i][j] = max(dp[i + 1][j], dp[i + 1][j + 1]) + mp[i][j];}cout << dp[1][1] << endl;return 0;}記憶化搜索解法:
dp時間為2,比記憶化搜索慢.
總結(jié)
以上是生活随笔為你收集整理的[蓝桥杯][算法提高VIP]夺宝奇兵-dp的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抓胸会不会让胸变大
- 下一篇: [蓝桥杯][基础练习VIP]芯片测试-思