有n个物品,有两辆车载重分别是c1,c2.问需要多少趟能把物品运完。
n比较小,只有10,而且需要把所有物品全部运完,便想到状态压缩来保存状态。
首先记录好所有的可行状态,对于状态state能一趟运完。
然后再利用01背包,dp[j],表示已运的状态为j,如果状态j与ok[i]不冲突,则可以从状态j运一趟变为j|ok[i]。
dp[j|ok[i]]=min(dp[j|ok[i]],dp[j]+1);
[cpp]
#include
#include
#include
#include
#include
#include
#include
#include