lintcode Guess Number Game II
来源:互联网 发布:淘宝内部优惠券采集 编辑:程序博客网 时间:2024/06/06 02:52
动态规划解析:
解法一: 记忆化搜索
1. state: dp[i][j] 为 从i 到 j 最少消耗的钱2. function: dp[i][j] = min(value[k] + max(dp[i][k],dp[k+1][j]))3. initialize: dp[0..n][0..n] = -14. answer: dp[0][n-1]详细代码: c++
int** dp; int getMoneyAmountHelper (int low, int high) { if (low >= high) { return 0; } if (dp[low][high] != -1) { return dp[low][high]; } int maxCost = pow(2,31) - 1; for (int i = low; i <= high; i++){ int left = getMoneyAmountHelper(low,i-1); int right = getMoneyAmountHelper(i+1, high); maxCost = min(maxCost, max(left, right)); } return dp[low][high] = max1; } int getMoneyAmount(int n) { dp = new int*[n]; for(int i = 0; i < n; i++) { dp[i] = new int[n]; for (int j = 0; j < n; j++) { dp[i][j] = -1; } } return getMoneyAmountHelper(0,n-1); }
解法二: 循环
和记忆化搜索的差别在与 要注意初始化顺序
int getMoneyAmount(int n) { int dp[n][n]; const int INTMAX = pow(2, 31) - 1; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { dp[i][j] = INTMAX; } } for (int i = 0; i < n; i++) { dp[i][i] = 0; } for (int width = 1; width < n; width++) { for (int i = 0, j = i + width; j < n; i++, j++) { for (int k = i; k <= j; ++k) { if (k > i && k < j) { dp[i][j] = min(dp[i][j], k + 1 + max(dp[i][k - 1], dp[k + 1][j])); } else if (k == i) { dp[i][j] = min(dp[i][j], k + 1 + dp[i + 1][j]); } else { dp[i][j] =min(dp[i][j], k + 1 + dp[i][j-1]); } } } } return dp[0][n - 1];}
阅读全文
0 0
- LintCode Guess Number Game II
- lintcode Guess Number Game II
- lintcode(666)Guess Number Game II
- lintcode:Guess Number Game
- lintcode(662)Guess Number Game
- lintcode Guess Number Game(Java)
- Google/LintCode:E-Guess Number Game
- Guess Number Game
- Lintcode - Majority Number II
- lintcode:Majority Number II
- lintcode: Ugly Number II
- Mini-project # 2 - "Guess the number" game"
- game——Guess the number!
- Guess Number Higher or Lower II
- leetcode:Guess Number Higher or Lower II
- [Leetcode]Guess Number Higher or Lower II
- 375. Guess Number Higher or Lower II
- 375. Guess Number Higher or Lower II
- 找出数组中不同的两个数
- Spring+MyBatis多数据源配置实现
- 第五周java作业
- 考试总结2
- 01Redis学习
- lintcode Guess Number Game II
- 【福分系统】bootstrap表格控件
- jquery实现品牌列表的显示
- 自定义bs soup的抓取函数,查找不含某个class属性tag 以及一个小问题'NoneType' object has no attribute '__getitem__'
- URAL 1996 Cipher Message 3 FFT KMP
- leetcode200. Number of Islands
- 在maven项目中使用Junit的assertThat()方法时,is()方法的使用
- Linux之Shell基础
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J Minimum Distance in a Star Graph 广度优先搜索