动态规划--新手

一、二叉树取宝

  在一棵完全二叉树上放着各式各样的宝物,宝物的价值是一个整数。只能从上到下取一次。你的任务是计算最多能取到的宝物。

第1行是一个正整数n,表示完全二叉树的结点数,接着有n个整数,分别表示每个结点的财富值。

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     static Scanner sc = new Scanner(System.in);
 5     
 6     public static void main(String[] args) {
 7         int id = 1;
 8         while(sc.hasNext()){
 9             int n = sc.nextInt();
10             if(n == 0) break;
11             int[] a = new int[n];
12             for(int i = 0; i < n; i++)
13                 a[i] = sc.nextInt();
14             
15             for(int i = n-1; i > 0; i-=2)
16                 a[(i-2)/2] += Math.max(a[i], a[i-1]);
17             
18             System.out.println("Case "+ id++ +":"+a[0]);
19         }
20     }
21 }
22     

 

posted @ 2019-03-21 21:57  MoonTwilight  阅读(148)  评论(0编辑  收藏  举报