rqnoj-开心的金明

http://www.rqnoj.cn/Problem_2.html

总结:

1、vc6.0 span c1错误 因为之前卸载过vc6.0 导致用了绿色版本后报这个错误

2、unknown character 0xa1 错误 因为误敲入了一个全角符号,对最近改动过的代码逐行注释,然后重写该行

3、算法-动态规划

n个物品 最大情况分为两种,买第n个物品和不买第n个物品

max[n][money] = max{max[n-1][money-value[n].value],           max[n-1][money]}

其中,money为总钱数,n为物品数,value[n].value 为第n个物品的价格

刚开始实现的时候,只在脑子里想了大概算法,没有用数学对其建模表述,就在实现代码上一直想成了max[n][n],即物品的二维记录表格,怎么也无法解释,后面逐个递归,又递推,发现跟金钱有关,建立max[n][money]表格就可以表述了,而这个不也正式算法的描述啊

4、路漫漫其修远兮,吾将上下而求索

 

实现代码如下:

#include <iostream.h>

int value[26][30001];
int totalMoney , totalArticle;
struct Article{
    int value;
    int depth;
}article[26];

int main()
{
 int i,j;
 int totalMax=0;
 cin>>totalMoney>>totalArticle;
 for (i=1; i<=totalArticle; i++) cin>>article[i].value>>article[i].depth;

 for (j=1; j<=totalArticle; j++)
  {
 for (i=0;i<=totalMoney;i++)
    {
          value[j][i] = value[j-1][i];
    int sumValue = article[j].value*article[j].depth;
       if (i>=article[j].value && value[j][i]<sumValue+value[j-1][i-article[j].value])
      {
           value[j][i] = sumValue+value[j-1][i-article[j].value   

      }
   }//for money-金钱
 }//for  n-物品
cout<<value[totalArticle][totalMoney];
  return 0;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值