10 3 4 0.1 4 0.2 5 0.3 0 0
44.0%HintYou should use printf("%%") to print a ‘%‘.
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
double sum[10010];
int cost[10010];
double prob[10010];
int main()
{
	int n,m;
	int i,j;
	double p;
	while(scanf("%d%d",&n,&m),n|m)
	{
		for(i=0;i<=n;i++)//sum数组初始化为1; 
		{
			sum[i]=1;
		}
		for(i=0;i<m;i++)
		{
			scanf("%d%lf",&cost[i],&p);
			prob[i]=1-p;//落选概率; 
		}
		for(i=0;i<m;i++)
		{
			for(j=n;j>=cost[i];j--)
			{
				sum[j]=min(sum[j],sum[j-cost[i]]*prob[i]);
			    //最小的落选概率; 
			}
		}
		printf("%.1lf%%\n",(1-sum[n])*100);
	}
	return 0;
}版权声明:本文为博主原创文章,未经博主允许不得转载。
hdoj 1203 I NEED A OFFER! 【01背包】
原文:http://blog.csdn.net/longge33445/article/details/48009685