首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

动态规划入门——I NEED A OFFER

2013-10-03 
动态规划入门——I NEED A OFFER!转载请注明出处:http://blog.csdn.net/a1dark分析:由于正向不是很好求、所以

动态规划入门——I NEED A OFFER!

转载请注明出处:http://blog.csdn.net/a1dark

分析:由于正向不是很好求、所以先求补集、然后用1-补集=本身、这样的话跟01背包就没多大差别了、

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define N 10005double dp[N];int c[N];double w[N];int main(){    int n,m;    while(scanf("%d%d",&n,&m)!=EOF){        if(n==0&&m==0)break;        for(int i=0;i<m;i++)            scanf("%d%lf",&c[i],&w[i]);        memset(dp,0,sizeof(dp));        for(int i=0;i<m;i++){            for(int j=n;j>=c[i];j--)                dp[j]=max(dp[j],(1-(1-dp[j-c[i]])*(1-w[i])));        }        printf("%.1lf%%\n",dp[n]*100);    }    return 0;}


热点排行