UVa 10003 Cutting Sticks
来源:互联网 发布:网络mg老虎机玩法 编辑:程序博客网 时间:2024/05/18 02:53
i, j 为第i个切割点和第j个切割点,
dp[i][j] =min(dp[i][j], dp[i][k] + dp[k][j]) + a[j] - a[i];
这样只要开 52 * 52数组就可以了
#include <cstdio>#include <cstdlib>#include <set>#include <map> #include <vector> #define N 55 //看看LLC的优化方法 using namespace std;int dp[N][N]; const int inf =( -1u >> 1) ; int a[52];void init(int n){ for (int i = 0; i <= n + 1 ; i++) for (int j = i + 2; j <= n + 1; j++) dp[i][j] = inf;} int main(){ int l, n; while (scanf("%d", &l) != EOF && l) { scanf("%d", &n); a[0] = 0; for (int i = 1; i <= n; i++) scanf("%d", a+i); a[n + 1] = l; for (int i = 0; i <= n; i++) dp[i][i + 1] = 0; init(n); for (int k = 1; k <= n; k++) for (int i = 0; i < n + 1 - k; i++) { for (int j = i + 1; j < (i + k + 1); j++) dp[i][i + k + 1] = min(dp[i][i + k + 1], dp[i][j] + dp[j][i + k + 1]); dp[i][i + k + 1] += (a[i + k + 1] - a[i]); } printf("The minimum cutting is %d.\n", dp[0][ n + 1]); } return 0;}
- UVa 10003 Cutting Sticks
- UVA 10003 - Cutting Sticks
- UVa 10003 - Cutting Sticks
- uva 10003 Cutting Sticks
- uva:10003 - Cutting Sticks
- UVa 10003 Cutting Sticks
- UVa 10003 Cutting Sticks
- UVa 10003 - Cutting Sticks
- UVA 10003 Cutting Sticks
- Uva - 10003 - Cutting Sticks
- UVa 10003 - Cutting Sticks
- UVa 10003 - Cutting Sticks
- UVA 10003 Cutting Sticks
- UVa 10003 Cutting Sticks
- UVa 10003 - Cutting Sticks
- Uva-10003-Cutting Sticks
- UVa:10003 Cutting Sticks
- UVA - 10003 Cutting Sticks
- ACE反应器(Reactor)模式(2)
- CListCtrl的使用
- MTK Android 编译模块说明及编译命令
- 快意报表
- ACE反应器模式(3)
- UVa 10003 Cutting Sticks
- ACE反应器模式(4)
- 监听浏览器最小化与最大化时,执行的动作。
- vim文本编辑器使用大全 命令的解读
- ubuntu下固定IP地址配置方法
- 分享10 个你可能没用过的 Linux 命令,有些比较简化常用操作,比较有用。
- FormatMessage 格式化 GetLastError 获取的错误代码
- 2011年回顾
- DB2中SQLSTATE=57016 SQLCODE=-668,原因码 "7"的解决方法