DFS解决什么问题
- 给定一个序列,枚举这个序列的所有子序列(可以不连续)
- 枚举从N个整数中选择K个数的所有方案
背包问题
int n,maxC,V;
int W[], C[];
void DFS(int index, int sumW, int sumC)
{
if (index == n)
{
return;
}
//不放
DFS(index + 1, sumW, sumC);
//放
if (sumW + W[index] <= V)//放得下
{
if (sumC + C[index]>maxC)
{
maxC = sumC + C[index];
}
DFS(index + 1, sumW + W[index], sumC + C[index]);
}
}