码迷,mamicode.com
首页 > 其他好文 > 详细

312. 戳气球

时间:2020-05-13 12:07:31      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:tor   根据   amp   应该   points   一个   class   case   选择   

 1 //dp[i][j] = x表示,戳破气球i和气球j之间(开区间,不包括i和j)的所有气球,可以获得的最高分数为x
 2 //根据刚才对dp数组的定义,如果最后一个戳破气球k,dp[i][j]的值应该为:
 3 // dp[i][j] = dp[i][k] + dp[k][j] 
 4 //          + points[i]*points[k]*points[j]
 5 class Solution 
 6 {
 7 public:
 8     int maxCoins(vector<int>& nums) 
 9     {
10         int n = nums.size();
11         // 添加两侧的虚拟气球
12         vector<int> points(n + 2);
13         points[0] = points[n + 1] = 1;
14         for (int i = 1; i <= n; i++) points[i] = nums[i - 1];
15         
16         // base case 已经都被初始化为 0
17         vector<vector<int>> dp(n + 2,vector<int>(n + 2));
18 
19         // 开始状态转移
20         // i 应该从下往上
21         for (int i = n; i >= 0; i--) 
22         {
23             // j 应该从左往右
24             for (int j = i + 1; j < n + 2; j++) 
25             {
26                 // 最后戳破的气球是哪个?
27                 for (int k = i + 1; k < j; k++) 
28                 {
29                     // 择优做选择
30                     dp[i][j] = max(
31                         dp[i][j], 
32                         dp[i][k] + dp[k][j] + points[i]*points[j]*points[k]
33                     );
34                 }
35             }
36         }
37         return dp[0][n + 1];
38     }
39 };

 

312. 戳气球

标签:tor   根据   amp   应该   points   一个   class   case   选择   

原文地址:https://www.cnblogs.com/yuhong1103/p/12881256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!