动态规划1
2012-08-14 22:44
211 查看
#include<stdio.h>
#include<stdlib.h>
#include<string>
int main()
{
int sum = 11;
int candidate[3] = {1, 3, 5};
int s[12];
memset(s, 0, sizeof(s));
for(int i = 1; i <= 11; ++i)
{
int min = 100;
for(int j = 0; j < 3; ++j)
{
if(i - candidate[j] < 0)
break;
if(s[i-candidate[j]]+1 < min)
{
min = s[i-candidate[j]]+1;
s[i] = s[i-candidate[j]]+1;
}
}
for(int k = 0; k <= 11; ++k)
printf("%d ", s[k]);
printf("\n");
}
return 0;
}
动态规划,简单来说就是遍历每种情况(但只在前一次状态最佳的基础上遍历所有的情况),所以该算法的浮渣度是N*M,N代表总和, M代表备选的个数。
#include<stdlib.h>
#include<string>
int main()
{
int sum = 11;
int candidate[3] = {1, 3, 5};
int s[12];
memset(s, 0, sizeof(s));
for(int i = 1; i <= 11; ++i)
{
int min = 100;
for(int j = 0; j < 3; ++j)
{
if(i - candidate[j] < 0)
break;
if(s[i-candidate[j]]+1 < min)
{
min = s[i-candidate[j]]+1;
s[i] = s[i-candidate[j]]+1;
}
}
for(int k = 0; k <= 11; ++k)
printf("%d ", s[k]);
printf("\n");
}
return 0;
}
动态规划,简单来说就是遍历每种情况(但只在前一次状态最佳的基础上遍历所有的情况),所以该算法的浮渣度是N*M,N代表总和, M代表备选的个数。
相关文章推荐
- 动态规划(一)
- 动态规划-最大连续乘积子数组
- 基于连通性状态压缩的动态规划问题
- 动态规划 最长上升子序列
- 动态规划——最长递增子序列
- 动态规划--鸣人的影分身
- 动态规划之最长公共子序列问题(LCS)
- 动态规划——0/1背包问题
- 动态规划之0-1背包问题
- 动态规划(基金管理,uva 1412)
- 动态规划
- 100道动态规划——21 HDU 1559 最大子矩阵和 树状数组 最大连续子区间和
- 动态规划----最大子段和
- 动态规划0/1背包问题
- 递归到动态规划的一般转化方法
- 动态规划求解最长公共子串与公共子序列
- 动态规划问题
- 动态规划3-Warshall算法和Floyd算法
- 动态规划练习--18(买书)
- 动态规划C++::杭电ACM1003