• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一个具有上进心的码农
因为一篇文章中有很多是从很多篇文章中摘取的,请恕我没有一一说明摘取出处,如果没有说明,则该文章默认是摘取,如有侵犯您的权益,请与我联系,将会马上删除。
博客园    首页    新随笔    联系   管理    订阅  订阅

背包算法

代码
 namespace Program
 {
     
public class Package
     {
         
public double[] goods = new double[] { 1, 1.1, 2, 3, 4 };
 
         
/// <summary>
         
/// 用递归算出
         
/// </summary>
         
/// <param name="puts">目前放入背包的数</param>
         
/// <param name="unPuts">可放入背包的数</param>
         
/// <param name="sum">背包还剩的容量</param>
         public void ShowComposes(List<double> puts,double[] unPuts, double sum)
         {
             
//输出当前放入背包符合条件的所有数
             bool exist = false;
             
foreach (double d in puts)
             {
                 System.Console.Write(d
+ " ");
                 exist 
= true;
             }
             
if(exist)
                 System.Console.WriteLine();
 
             
//在可放入背包的数字中,选择可放的数并放进背包
             foreach (double d in unPuts)
             {
                 
if (d < sum)
                 {
                     List
<double> newPuts = puts.ToList<double>();
                     newPuts.Add(d);
                     ShowComposes(newPuts, goods, sum 
- d);
                 }
             }
         }
 
         
static void Main(string[] args)
         {
             Package p 
= new Package();
             p.ShowComposes(
new List<double>(), p.goods, 6);
         }
     }
 }

 

 

这里是算小于6的全部组合.

 

posted @ 2010-03-24 09:44  不若相忘于江湖  阅读(184)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3