Cutting Sticks UVA 10003(区间DP)
2018-02-09 01:50
429 查看
d(i,j)是第i个和第j个节点之间最优切割法.
这个状态转移方程太适合写记忆化搜索了,但是写迭代就有点gg.刘汝佳书上说这样的"正确的方法是按照j-i递增的顺序递推,因为长区
间的值依赖于短区间的值 "那么就算区间长度为0,1,2,3.....这样迭代下去.
还是第一次写记忆化搜索.
1.以区间分解分割(好像是理所当然).
2.存区间节点数组的边界要注意.
3.我输出少了个'.'号...........
4.0x3f可以用来初始化INF,大概是1e9级别的.
#include <bits/stdc++.h>
using namespace std;
#define INF 100000000
int n, l;
int d[55][55];
int cut[55];
int dp(int i, int j)
{
if(d[i][j] < INF)
return d[i][j];
if(i >= j - 1)
return d[i][j] = 0;
for(int k = i + 1; k < j; k++){
d[i][j] = min(dp(i, k) + dp(k, j) + cut[j] - cut[i], d[i][j]);
}
return d[i][j];
}
int main()
{
while(scanf("%d", &l) != EOF && l)
{
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &cut[i]);
cut[n + 1] = l;
memset(d, 0x3f, sizeof d);
printf("The minimum cutting is %d.\n", dp(0, n + 1));
}
return 0;
}
这个状态转移方程太适合写记忆化搜索了,但是写迭代就有点gg.刘汝佳书上说这样的"正确的方法是按照j-i递增的顺序递推,因为长区
间的值依赖于短区间的值 "那么就算区间长度为0,1,2,3.....这样迭代下去.
还是第一次写记忆化搜索.
1.以区间分解分割(好像是理所当然).
2.存区间节点数组的边界要注意.
3.我输出少了个'.'号...........
4.0x3f可以用来初始化INF,大概是1e9级别的.
#include <bits/stdc++.h>
using namespace std;
#define INF 100000000
int n, l;
int d[55][55];
int cut[55];
int dp(int i, int j)
{
if(d[i][j] < INF)
return d[i][j];
if(i >= j - 1)
return d[i][j] = 0;
for(int k = i + 1; k < j; k++){
d[i][j] = min(dp(i, k) + dp(k, j) + cut[j] - cut[i], d[i][j]);
}
return d[i][j];
}
int main()
{
while(scanf("%d", &l) != EOF && l)
{
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &cut[i]);
cut[n + 1] = l;
memset(d, 0x3f, sizeof d);
printf("The minimum cutting is %d.\n", dp(0, n + 1));
}
return 0;
}
相关文章推荐
- Cutting Sticks UVA - 10003 (区间Dp)
- Cutting Sticks UVA - 10003 (区间dp,线性dp)
- Cutting Sticks+uva+区间dp
- 例题9-9 UVA 10003 Cutting Sticks 切木棍(区间dp)
- Cutting Sticks UVA - 10003
- uva 10003 Cutting Sticks(区间DP)
- uva 10003 Cutting Sticks (动态规划:区间DP)
- UVA 10003 —— 区间DP
- uva 10003 Cutting Sticks (区间dp)
- UVA 10003 Cutting Sticks(区间DP)
- UVA 10003 Cutting Sticks(区间 DP)
- UVA 10003 Cutting Sticks(区间DP)
- uva 10003 Cutting Sticks 【区间dp】
- UVa 10003 Cutting Sticks 超详细题解(区间DP经典)
- uva 10003 Cutting Sticks(区间DP)
- uva10003 - Cutting Sticks(区间dp)
- UVa 10003 Cutting Sticks(区间DP)
- uva 10003 Cutting Sticks (区间dp)
- 区间DP与贪心算法的联系(uav Cutting Sticks && poj Fence Repair(堆的手工实现))
- uva10003 - Cutting Sticks(DP,区间)