玄关,急

P2347 [NOIP1996 提高组] 砝码称重

神马题???
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


| 下一页