NOIP培训教程(二)习题解析之动态规划

时间:2012-08-13 11:45:43
【文件属性】:

文件名称:NOIP培训教程(二)习题解析之动态规划

文件大小:93KB

文件格式:DOC

更新时间:2012-08-13 11:45:43

习题解析之动态规划

砝码问题: 设有1g,2g,3g,5g,10g,20g的砝码各若干枚(其总重<=1000g),要求: 输入:a1,a2,a3,a4,a5,a6(表示1g的砝码有a1个,2g的砝码有a2个. ……20g的砝码有a6个) 输出:Total=n(n表示这些砝码能称出的不同重量的个数,但不包括 一个砝码也不用的情况。 Sample Input: 1 1 0 0 0 0 Sample Output: Total=3 (表示可以称出1g,2g,3g三种不同的重量) 问题分析: 考虑到本题规模不大,我们可以利用朴素的动态规划求解: F[I,J]=F[I-1,J] or F[I-1,J-VI] or … or F[I-1,J-ai*VI] 这里F[I,J]表示前I种砝码是否能恰好称出质量J 边界条件: F[0,0]=1 F[x,y]=0(x,y>0) 参考程序: #include"stdio.h" int a[7]; int f[7][1001]={0}; int m[7]={0,1,2,3,5,10,20}; int main() { int i,j,k; int ans=0; f[0][0]=1; for(i=1;i<=6;i++)


网友评论

  • 动态规划...有点深了,不过可以看看...
  • 比较全面的文章,值得一看