背包算法

今天在社区帮人解答某个算法问题,其中有位朋友提出了背包问题的算法,特把他的方法贴在这里收藏一下:
  1. namespaceProgram
  2. {
  3. publicclassPackage
  4. {
  5. publicdouble[]goods=newdouble[]{1,1.1,2,3,4};
  6. ///<summary>
  7. ///用递归算出
  8. ///</summary>
  9. ///<paramname="puts">目前放入背包的数</param>
  10. ///<paramname="unPuts">可放入背包的数</param>
  11. ///<paramname="sum">背包还剩的容量</param>
  12. publicvoidShowComposes(List<double>puts,double[]unPuts,doublesum)
  13. {
  14. //输出当前放入背包符合条件的所有数
  15. boolexist=false;
  16. foreach(doubledinputs)
  17. {
  18. System.Console.Write(d+"");
  19. exist=true;
  20. }
  21. if(exist)
  22. System.Console.WriteLine();
  23. //在可放入背包的数字中,选择可放的数并放进背包
  24. foreach(doubledinunPuts)
  25. {
  26. if(d<sum)
  27. {
  28. List<double>newPuts=puts.ToList<double>();
  29. newPuts.Add(d);
  30. ShowComposes(newPuts,goods,sum-d);
  31. }
  32. }
  33. }
  34. staticvoidMain(string[]args)
  35. {
  36. Packagep=newPackage();
  37. p.ShowComposes(newList<double>(),p.goods,6);
  38. }
  39. }
  40. }
原帖地址:http://topic.csdn.net/u/20080827/13/3fbba373-8882-4d22-a0f2-2188b0ba2ef6.html

你可能感兴趣的:(html,算法,.net)