#include <string.h>
#include<stdio.h>
#include<iostream>
using namespace std;
double f[10000];
int a[1010];
double b[1010];
double MAX(double a,double b)
{
return a>b?a:b;
}
int main()
{
i nt i,j,m,n;
//n万元 m所学校
while (cin >> n >> m && (n != 0 || m != 0))
{
for (i=0;i<m;i++)
cin >> a[i] >> b[i];
memset(f,0,sizeof(f));
for (i=0;i<m;i++)
for (j=n;j>=a[i];j--)//针对第i个学校,判断花费j万元时的最大被录取概率
f[j]=MAX(f[j],(1-(1-f[j-a[i]])*(1-b[i])));
printf("%.1lf%%\n",f[n]*100);
}
return 0;
}
原文:http://www.cnblogs.com/2016zhanggang/p/5547368.html