蓝桥杯砝码称重(01背包)为什么这样写不对

你有一架天平和 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都没定义,这玩意能编译?