#include <bits/stdc++.h> using namespace std; #define ll long long #define s string #define c char #define co cout #define ci cin #define b bool #define re return int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cout<<"NO"; return 0; }
01背包板子。
用 f[i]f[i]f[i] 表示能否凑成 iii 的重量。则若 f[i−当前物品重量]f[i-\text{当前物品重量}]f[i−当前物品重量] 为真,f[i]f[i]f[i] 也就为真。得出状态转移方程:
f[j]=f[j]∣∣f[j−a[i]]f[j] = f[j]||f[j-a[i]] f[j]=f[j]∣∣f[j−a[i]]
f[0]=1; for (int i=1;i<=n;i++){ for (int j=s;j>=1;j--){ f[j]=f[j]||f[j-a[i]]; } }
注册一个 核OJ_核桃编程 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 核OJ_核桃编程 通用账户