[藍橋杯][演算法提高VIP]奪寶奇兵 dp
藍橋杯歷年真題題目及題解目錄彙總
題目描述
在一座山上,有很多很多珠寶,它們散落在山底通往山頂的每條道路上,不同道路上的珠寶的數目也各不相同.下圖為一張藏寶地圖:
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
”奪寶奇兵”從山下出發,到達山頂,如何選路才能得到最多的珠寶呢?在上圖所示例子中,按照5-> 7-> 8-> 3-> 7的順序,將得到最大值30
輸入
第一行正整數N(100> =N> 1),表示山的高度
接下來有N行非負整數,第i行有i個整數(1< =i< =N),表示山的第i層上從左到右每條路上的珠寶數目
輸出
一個整數,表示從山底到山頂的所能得到的珠寶的最大數目.
樣例輸入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
樣例輸出
30
楊輝三角
import java.util.Scanner;
public class 奪寶奇兵 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] dp = new int[n+1][n+1];
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
dp[i][j] = in.nextInt();
for(int i=n-1;i>=1;i--)
for(int j=1;j<=i;j++)
dp[i][j] = dp[i][j] + Math.max(dp[i+1][j], dp[i+1][j+1]);
System.out.println(dp[1][1]);
}
}
一維陣列寫法
#include<cstdio>
int n,a[1002],i,j,ans,p;
int max(int &x,int &y){return x>y?x:y;}
int main(){
scanf("%d",&n);
for(i=n;i;i--)
for(j=i;j<=n;j++)
scanf("%d",&p),a[j]=max(a[j],a[j+1])+p;
for(i=1;i<=n;i++)
ans=max(ans,a[i]);
printf("%d",ans);
return 0;
}
相關文章
- [藍橋杯][演算法提高VIP]尤拉函式演算法函式
- [藍橋杯][演算法提高VIP]超級瑪麗演算法
- [藍橋杯][演算法提高VIP]大數加法演算法
- [藍橋杯][演算法提高VIP]分蘋果 線段樹演算法蘋果
- 藍橋杯 演算法提高 拿糖果(完全揹包dp)演算法
- 題目 1501: [藍橋杯][演算法提高VIP]分蘋果演算法蘋果
- [藍橋杯][演算法提高VIP]最大乘積 貪心 雙指標演算法指標
- 藍橋杯演算法提高——字串匹配(Java)演算法字串匹配Java
- 藍橋杯 演算法提高 字串壓縮演算法字串
- [藍橋杯][演算法訓練VIP]方格取數演算法
- 藍橋杯-地宮取寶
- 藍橋杯 -- 演算法提高 身份證號碼升級演算法
- [藍橋杯][演算法提高VIP]上帝造題五分鐘 (線段樹+區間最小值)演算法
- Java實現 藍橋杯 演算法提高 八數碼(BFS)Java演算法
- 藍橋杯—演算法訓練演算法
- 藍橋杯--演算法訓練演算法
- [藍橋杯][基礎練習VIP]矩形面積交
- 藍橋杯-奪冠概率模擬(取隨機數)隨機
- 藍橋杯 排序排序
- [Java] 藍橋杯ADV-203 演算法提高 8皇后·改Java演算法
- 藍橋杯 演算法提高 P0102(Java解題)演算法Java
- 藍橋杯_演算法提高_身份證升級(簡單字元處理)演算法字元
- 問題 1462: [藍橋杯][基礎練習VIP]Huffuman樹
- [Java] 藍橋杯ADV-213 演算法提高 3-2求存款Java演算法
- 2016藍橋杯演算法提高——身份證號碼升級演算法
- 藍橋杯-N皇后
- 藍橋杯真題
- 發現一個可以練習藍橋杯VIP題目的網址
- [Java] 藍橋杯ADV-185 演算法提高 五次方數Java演算法
- [Java] 藍橋杯ADV-147 演算法提高 學霸的迷宮Java演算法
- 藍橋杯 (java)演算法訓練 數對Java演算法
- 演算法訓練 字首表示式 (藍橋杯)演算法
- 藍橋杯年號字串字串
- 藍橋杯-帶分數
- 藍橋杯-翻硬幣
- 藍橋杯-螞蟻感冒
- 藍橋杯 計算方程
- 藍橋杯-座次問題