@[过_路_人](/user/363972) emmm
```cpp
if (!q) {
c[cnt][0] = v;
w[cnt][0] = v * p;
cnt++;
}
else {
if (c[q][1]){
c[q][2] = v;
w[q][2] = v * p;
}
else {
c[q][1] = v;
w[q][1] = v * p;
}
```
这里,主件和附件就对应不上了,大概是这样的:
$q$和组不是对应的,$q$是第$q$个物品,而不是某个$cnt$,并非是第$q$个主件
by 圣嘉然 @ 2020-10-27 20:14:59
@[过_路_人](/user/363972) 可以这么搞
```cpp
if (!q) {
c[i][0] = v;
w[i][0] = v * p;
gro[cnt++]=i;
}
```
记录一下第`cnt`组的主件,遍历的时候
```cpp
for (int t = 1; t <= cnt; t++) {
int i=gro[t];
```
后面就不用改了(因为还是$i$代替某一组的主件编号
by 圣嘉然 @ 2020-10-27 20:17:03
@[圣嘉然](/user/110997) 感谢
by 智子 @ 2021-10-11 17:59:26