UVA - 10003 - Cutting Sticks(动态规划)
2014-03-09 15:19
483 查看
点击打开链接
题意:给出一个长度为L的木棍和N个要切的点pt[i],每次切割的代价为切割前木棍的长度,求总代价的最小值。
记忆化搜索:d[x][y] = 区间[x, y]的最小代价。
d[x][y] = min(d[x][y], dp(x, pt[i])+dp(pt[i], y)+(y-x));
2.179MS……
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX_N = 1001, INF = 0x3f3f3f3f>>1;
int N, L;
int d[MAX_N][MAX_N], pt[51];
int dp(int x, int y)
{
int cuted = 0;
if(d[x][y] != -1)
return d[x][y];
d[x][y] = INF;
for(int i = 0; i < N; i++)
if(x<pt[i] && pt[i]<y)
{
cuted = 1;
d[x][y] = min(d[x][y], dp(x, pt[i])+dp(pt[i], y)+(y-x));
}
if(!cuted) d[x][y] = 0;
return d[x][y];
}
int main()
{
//freopen("in.txt", "r", stdin);
while(scanf("%d", &L), L)
{
scanf("%d", &N);
for(int i = 0; i < N; i++)
scanf("%d", pt+i);
memset(d, -1, sizeof(d));
int ans = dp(0, L);
printf("The minimum cutting is %d.\n", ans);
}
return 0;
}
题意:给出一个长度为L的木棍和N个要切的点pt[i],每次切割的代价为切割前木棍的长度,求总代价的最小值。
记忆化搜索:d[x][y] = 区间[x, y]的最小代价。
d[x][y] = min(d[x][y], dp(x, pt[i])+dp(pt[i], y)+(y-x));
2.179MS……
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX_N = 1001, INF = 0x3f3f3f3f>>1;
int N, L;
int d[MAX_N][MAX_N], pt[51];
int dp(int x, int y)
{
int cuted = 0;
if(d[x][y] != -1)
return d[x][y];
d[x][y] = INF;
for(int i = 0; i < N; i++)
if(x<pt[i] && pt[i]<y)
{
cuted = 1;
d[x][y] = min(d[x][y], dp(x, pt[i])+dp(pt[i], y)+(y-x));
}
if(!cuted) d[x][y] = 0;
return d[x][y];
}
int main()
{
//freopen("in.txt", "r", stdin);
while(scanf("%d", &L), L)
{
scanf("%d", &N);
for(int i = 0; i < N; i++)
scanf("%d", pt+i);
memset(d, -1, sizeof(d));
int ans = dp(0, L);
printf("The minimum cutting is %d.\n", ans);
}
return 0;
}
相关文章推荐
- C++ 动态规划
- DP(动态规划) 解游轮费用问题
- 关于爬楼梯的动态规划算法
- 动态规划 --- hdu 1003 **
- 字符串编辑距离
- ACM常用算法
- LightOJ 1013 - Love Calculator(DP)
- 动态规划求解最大连续子序列和
- TopCoder SRM 569 DIV2 Level3: MegaFactorialDiv2
- Topcoder SRM 547 DIV1 Level 1: Pillars
- TopCoder SRM DIV2 Level 3: RelativelyPrimeSubset
- TOJ 1772
- TOJ 3250
- TOJ 4303
- TOJ 1545
- TOJ 2378
- TOJ 1408
- TOJ 1509
- TOJ 1635
- TOJ 3290