多重背包中为什么写双层循环的这种形式只能判断可行性,而不能求出最优性解
bool dp[maxc];
int num[maxc];
void work(int n,int W){
dp[0]=1;
for(int i=1;i<=n;i++){
memset(num,0,sizeof(num));
for(int j=v[i];j<=W;j++){
if(!dp[j]&&dp[j-v[i]]&&num[j-v[i]]<c[i]){
dp[j]=1;
num[j]=num[j-v[i]]+1;
}
}
}
}