题目大意:见lrj紫书205页,习题9-5,这题目做的真的很爽,刚开始用暴力递归,然后想了一下用dp去做了,真正的对递归和dp的内在联系有了一个稍微的了解。主要思路还是用dp[i][j]表示在加入i件物品费用j是否存在,然后dp完了之后在搜索一遍就ok。
题目链接:https://vjudge.net/problem/UVA-242
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#define max(a,b) (((a)>(b))?(a):(b))
using namespace std;
const int maxn = 12;
int n , setn , s;
bool dp[maxn][1005];
int log[maxn];
vector<int> set[maxn];
int maxcover () {
for (int i = 0 ; ; i++) {
int flag = 0;
for (int j = 0 ; j <= s ; j++) {
if (dp[j][i]) {
flag = 1;
break;
}
}
if (!flag)
return i-1;
}
}
int solve (int index) {
dp[0][0]