破防
查看原帖
破防
632141
chenhaihang楼主2024/4/21 16:18
#include<bits/stdc++.h>
using namespace std;
int z[10000];
int v[10010],dp[110][11000],sh;
int main(){
	int n,k=0;
	cin>>n;
	for(int i=1;i<=n;i++){
	cin>>v[i];
	sh+=v[i];
}
	for(int i=0;i<=n;i++){
		dp[i][0]=1;
	}
	for(int i=1;i<=n;i++){
		for(int j=sh;j>=1;j--){
			if(j==v[i])dp[i][j]=1;
			if(j+v[i]<=sh&&dp[i-1][j+v[i]]){
				dp[i][j]=1;
			}
			if(dp[i-1][abs(j-v[i])])dp[i][j]=1;
			if(dp[i-1][j]) dp[i][j]=1;
		}
	}
	int cnt=0;
	for(int i=1;i<=sh;i++){
		if(dp[n][i]){
			cnt++;
		}
	}
	cout<<cnt;
	return 0;
}
2024/4/21 16:18
加载中...