背包算法问题

 准备考研复试算法题  遇到了背包问题 之前看刘未鹏的《暗时间》和php面试题算法里都有提到背包问题

递归算法的难度还是蛮大的orz

明天继续理清一下思路。

背包问题:设有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的方案,使选中物品的总重量不超过指定的限制重量,但选中物品的价值之和为最大。编写一个程序求解背包问题。


递归算法伪代码:

find(物品 i,当前选择已达到的重量和tw,本方案可能达到的总价值为tv)

{

          /*考虑物品i包含在当前方案中的可能性*/

          if(包含物品i是可接受的)

          {

             将物品i包含在当前方案中;

             if(i<n-1)

                       find(i+1,tw+物品i的重量,tv);

             else               /*又一个完整方案,因它比前面的方案好,以它作为最佳方案*/

                      以当前方案作为临时最佳方案保存;

             恢复物品i不包含状态;

          }

          /*考虑物品i不包含在当前方案中的可能性*/

         if(不包含物品i仅是可考虑的)

                   if(i<n-1)

                          find(i+1,tw,tv-物品i的价值);

                   else              /*又一个完整方案,因它比前面的方案好,以它作为最佳方案*/

                           以当前方案作为临时最佳方案保存;

}



还遇到了一个问题n皇后还不能理解 或者说心没静下来仔细思考答案给出的递归算法。。递归算法很容易引起逆反心理和为难心理 。要克服啊  硬着头皮上。


n皇后问题:  编写一个程序,求解皇后问题:在n*n的方格棋盘上,放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。

   要求:1)皇后的个数n由用户输入,其值不能超过20.

               2)采用递归方法求解 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值