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

xiaoxiao2021-02-28  83

点击打开链接

#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*/

转载请注明原文地址: https://www.6miu.com/read-77900.html

最新回复(0)