神马题???
by my_name_qunge @ 2024-04-27 15:18:46
@[lucy2012](/user/1252442) 建议去讨论版
by comcnSBhhh @ 2024-04-27 15:19:22
@[lucy2012](/user/1252442) 看错了
by comcnSBhhh @ 2024-04-27 15:20:17
@[lucy2012](/user/1252442) 请把数组大小开到至少 1021,否则你将在 `dp[q+w[i]]` 处越界。
by Kazeno_Akina @ 2024-04-27 15:20:37
第10行`q>=1`改为`q>=0`
by BlindErmine5883 @ 2024-04-27 15:22:15
@[DoraYaoxy](/user/612567) 输出是0呀
by lucy2012 @ 2024-04-27 15:23:50
@[BlindErmine5883](/user/1011552) 谢谢啦!
by lucy2012 @ 2024-04-27 15:25:20
@[lucy2012](/user/1252442) 输出是不是0不重要,你如果不改满数据你必然越界。
还有一个就是倒序循环时应为 `q>=0`,否则你不会遍历到 `dp[0]`。
by Kazeno_Akina @ 2024-04-27 15:26:01
@[DoraYaoxy](/user/612567)
[测试点](https://www.luogu.com.cn/record/157223516)
不至于吧QwQ
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[7],w[7]={0,1,2,3,5,10,20},dp[1010],sum=0;
int main(){
for(int i=1;i<=6;i++)
cin>>a[i];
dp[0]=1;
for(int i=1;i<=6;i++){
for(int j=1;j<=a[i];j++){
for(int q=1000;q>=0;q--){
if(dp[q]==1)
dp[q+w[i]]=1;
}
}
}
for(int i=1;i<=1000;i++)
sum+=dp[i];
printf("Total=%d",sum);
return 0;
}
```
by lucy2012 @ 2024-04-27 15:28:18
@[DoraYaoxy](/user/612567)
## 设有 $1\mathrm{g}$、$2\mathrm{g}$、$3\mathrm{g}$、$5\mathrm{g}$、$10\mathrm{g}$、$20\mathrm{g}$ 的砝码各若干枚(其总重 $ \le 1000$),可以表示成多少种重量?
by lucy2012 @ 2024-04-27 15:29:56