样例过不去,求改错
查看原帖
样例过不去,求改错
181715
gjh303987897楼主2021/10/26 19:03
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int t,n;
int a[30005];
int dp[30004];
int main(){
	cin>>t;
	while(t>0){
		cin>>n;
		for(int i=1;i<=n;i++) cin>>a[i];
		dp[0]=1;
		for(int b=1;b<=n;b++){//对每一个数都进行背包,如果发现能被其他数组成就说明可以被替换掉 
			for(int i=1;i<=n;i++){
				if(i==b) continue;
				for(int j=1;j<a[b];j++){
					dp[j]+=dp[j-a[i]];
				}
			}
			if(dp[b]!=0) n--;
		}
		cout<<n<<endl; 
		memset(dp,0,sizeof(dp));
	}
	return 0;
}

2021/10/26 19:03
加载中...