你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W_1 W_2 ·· W_N。
请你计算一共可以称出多少种不同的正整数重量?
注意砝码可以放在天平两边。
```c++
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std; // 0/1背包问题
int N,sum=0,ans=0;
int n[105];
int dp[105][100005]; //dp[i][j]表示前i个物品称的重量为j。
int main(){
cin>>N;
for(int i=1;i<=N;i++){
cin>>n[i];
sum+=n[i];
}
dp[0][0]=1;
for(int i=1;i<=N;i++){
for(int j=0;j<=sum;j++){ //j从0开始循环
dp[i][j]=dp[i-1][j]||dp[i-1][j+n[i]]||dp[i-1][abs(j-n[i])];
// if(dp[i][j]==dp[i-1][j]){ //递归是求值,不是判断
// dp[i][j]=1;
// }
// if(dp[i][j]==dp[i-1][j+n[i]]){
// dp[i][j]=1;
// }
// if(dp[i][j]==dp[i-1][abs(j-n[i])]){
// dp[i][j]=1;}
}
}
for(int i=1;i<=sum;i++){
if(dp[N][i]){
ans++; }
}
cout<<ans;
}
```
?????
你的砝码重量在哪里?我通篇看了一遍,你在背包里自己折腾啥呢,没有砝码什么事啊
好好粘代码,题目就一句话?还有n都没定义,这玩意能编译?