uva 10003 cutting sticks
2016-12-14 17:46
399 查看
最近动态规划真的是让人头疼,但是越是难的东西越要坚持!先从简单的开始,一点一点地努力,DP基础题。思路就是和刘大爷的一致。
#include <iostream>
#include <cstring>
using namespace std;
int l,n;
int p[60];
int dp[60][60];
const int inf = 0x3f3f3f3f;
void solve () {
for (int i = 0 ; i <= n-1 ; i++)
dp[i][i+2] = p[i+2] - p[i];
for (int i = 0 ; i <= n ; i++)
dp[i][i+1] = 0;
for (int s = 3 ; s <= n+1 ; s++) {
for (int i = 0 ; i <= n+1-s ; i++) {
for (int j = i+1 ; j < i+s ; j++) {
dp[i][i+s] = min(dp[i][i+s] , dp[i][j]+dp[j][i+s]+p[i+s]-p[i]);
}
}
}
}
int main () {
while (cin >> l) {
if (!l) return 0;
cin >> n;
memset(dp,inf,sizeof(dp));
memset(p,0,sizeof(p));
p[0]=0 ; p[n+1]=l;
for (int i = 1 ; i <= n ; i++)
cin >> p[i];
solve();
cout << "The minimum cutting is " << dp[0][n+1] << "." << endl;
}
}
#include <iostream>
#include <cstring>
using namespace std;
int l,n;
int p[60];
int dp[60][60];
const int inf = 0x3f3f3f3f;
void solve () {
for (int i = 0 ; i <= n-1 ; i++)
dp[i][i+2] = p[i+2] - p[i];
for (int i = 0 ; i <= n ; i++)
dp[i][i+1] = 0;
for (int s = 3 ; s <= n+1 ; s++) {
for (int i = 0 ; i <= n+1-s ; i++) {
for (int j = i+1 ; j < i+s ; j++) {
dp[i][i+s] = min(dp[i][i+s] , dp[i][j]+dp[j][i+s]+p[i+s]-p[i]);
}
}
}
}
int main () {
while (cin >> l) {
if (!l) return 0;
cin >> n;
memset(dp,inf,sizeof(dp));
memset(p,0,sizeof(p));
p[0]=0 ; p[n+1]=l;
for (int i = 1 ; i <= n ; i++)
cin >> p[i];
solve();
cout << "The minimum cutting is " << dp[0][n+1] << "." << endl;
}
}
相关文章推荐
- UVa 10003 Cutting Sticks 解题源码
- 【UVa 10003】【区间DP】Cutting Sticks【有一个长为L的木棍,木棍中间有n个切点。每次切割的费用为当前木棍的长度。求切割木棍的最小费用。】
- uva 10003- Cutting Sticks (记忆化搜索)
- UVA 10003 - Cutting Sticks
- UVa 10003 Cutting Sticks (DP)
- 区间dp 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(区间DP)
- Uva 10003 Cutting Sticks (区间dp)
- UVA - 10003 - Cutting Sticks
- UVA 10003 - Cutting Sticks
- uva 10003 Cutting Sticks(区间DP)
- UVa10003 - Cutting Sticks
- uva10003 Cutting Sticks
- UVa 10003 - Cutting Sticks
- uva 10003 Cutting Sticks(区间DP)