hdu 1203 I need a offer(经典01背包)

本文介绍了一种解决0-1背包问题的动态规划算法实现,该算法通过计算最大概率达到背包容量的方法,适用于多种应用场景。文章详细展示了算法的C语言代码实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击打开链接


#include<stdio.h>
double dp(int a[],double b[],int n,int m){
  int i,j;
  double f[10001]={0.0};//背包的费用是作为下标来记录的
  for(i=0;i<m;i++)
    for(j=n;j>=a[i];j--)
      if(f[j]<1-(1-f[j-a[i]])*(1-b[i]))
        f[j]=1-(1-f[j-a[i]])*(1-b[i]);
  return f[n]*100;
}
main(){
  int a[10001],i,n,m;
  double b[10001];
  while(scanf("%d%d",&n,&m)==2&&(n+m)){//输入俩数的时候可以这么写
    for(i=0;i<m;i++)
      scanf("%d%lf",&a[i],&b[i]);
    printf("%.1lf%%\n",dp(a,b,n,m));
  }
}
/*数组没传入可能是%后写错了,double是%lf*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值