for循环条件求助
查看原帖
for循环条件求助
996070
0_and_1楼主2025/7/28 21:58
for(int sub = bin;;sub=bin&(sub-1)){
    if(W[bin^sub]<=v) dp[bin]=min(dp[bin],dp[sub]+T[bin^sub]);
    if(!sub) break;
}

为什么不能写成

for(int sub = bin;sub;sub=bin&(sub-1)){
    if(W[bin^sub]<=v) dp[bin]=min(dp[bin],dp[sub]+T[bin^sub]);
}

binbin 是枚举状态,subsubbinbin 的子集。

但是 ...;sub;... 不就是 subsubtrue(即不等于 00)时循环吗?

代码二会输出一个很大的数,即初始化时赋值的数。

2025/7/28 21:58
加载中...