标签:
200.00 3 2 A:23.50 B:100.00 1 C:650.00 3 A:59.99 A:120.00 X:10.00 1200.00 2 2 B:600.00 A:400.00 1 C:200.50 1200.50 3 2 B:600.00 A:400.00 1 C:200.50 1 A:100.00 100.00 0
123.50 1000.00 1200.50
思路:报销时以发票为单位,用深搜实现01背包
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct Node{ double sum; bool mark; }order[35]; double limit; int n; double res; void dfs(int i,double s) { if(i==n) { if(s<=limit) res=max(res,s); return ; } if(order[i].mark) { dfs(i+1,s+order[i].sum); dfs(i+1,s); } else { dfs(i+1,s); } } int main() { while(scanf("%lf%d",&limit,&n)!=EOF&&n!=0) { res=0; for(int i=0;i<35;i++) { order[i].sum=0.0; order[i].mark=true; } for(int i=0;i<n;i++) { int m; scanf("%d",&m); char op; double price; for(int j=0;j<m;j++) { scanf("%*c%c%*c%lf",&op,&price); if(op!=‘A‘&&op!=‘B‘&&op!=‘C‘) { order[i].mark=false; } else { if(order[i].mark) { order[i].sum+=price; } } } } dfs(0,0); printf("%.2lf\n",res); } return 0; }
标签:
原文地址:http://www.cnblogs.com/program-ccc/p/5425524.html