如果加了注释内容,会WA#4
数据:1 1 0 0 4 8
不加注释正确输出:83
加了注释后输出:123
请问这是为什么?注释预处理的 b[i] * j 不应该在后面都遍历过吗?
#define ll int
#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
int sum, len;
int b[7] = {0, 1, 2, 3, 5, 10, 20}, a[N];
bool vis[N];
int main() {
ios::sync_with_stdio(false), cin.tie(0);
for (int i = 1; i <= 6; i++) {
cin >> a[i];
sum += a[i] * b[i];
}
vis[0] = true;
for (int i = 1; i <= 6; i++)
for (int j = sum; j >= b[i]; j--)
for (int k = 1; k <= a[i] && b[i] * k <= j; k++)
vis[j] |= vis[j - b[i] * k];
int ans = 0;
for (int i = 1; i <= sum; i++)
if (vis[i]) ans++;
cout << "Total=" << ans;
return 0;
}