HDU 1864 最大报销额

来源:互联网 发布:高价回收域名的事例 编辑:程序博客网 时间:2024/05/02 02:23

注意数组的大小,以及字符的输入问题

#include<stdio.h>#include<string.h>int dp[4000000],a[4],money[400];char s[120];double str[120];int max(int a,int b){return a>b?a:b;}int main(){    int N,sum,ans,ok,count,i,j,num;    double Q;       while(~scanf("%lf%d",&Q,&N),N)   {         count=0;       sum=(int)(Q*100);       while(N--)      {           scanf("%d",&num);           a[0]=a[1]=a[2]=0;           ok=0;           while(num--)           {             getchar();             scanf("%c%c%lf",&s[0],&s[1],&str[0]);             if(s[0]=='A'||s[0]=='B'||s[0]=='C')             {                ans=(int)(str[0]*100);                if(s[0]=='A') a[0]+=ans;                else if(s[0]=='B') a[1]+=ans;                else  a[2]+=ans;             }              else                 ok=1;             }             if(!ok&&a[0]+a[1]+a[2]<=100000&&a[0]<=60000&&a[1]<=60000&&a[2]<=60000)               money[count++]=a[0]+a[1]+a[2];                            }      memset(dp,0,sizeof(dp));      for(i=0;i<count;i++)        for(j=sum;j>=money[i];j--)           dp[j]=max(dp[j],dp[j-money[i]]+money[i]);      printf("%.2lf\n",(double)(dp[sum]/100.0));  }   return 0;} 


0 0