注意在进行背包时 fif_ifi 要归零 并且不能直接覆盖,要新建变量(因为 cnt 可能为 000),还必须循环到 000 为止
for(int j = n; ~j; --j) { bool flag = false; if(j >= cnt1) flag |= reach[j - cnt1]; if(j >= cnt2) flag |= reach[j - cnt2]; reach[j] = flag; }