题目
思路
对每个系统的货币排序,若后面的可被前面构造,ans–。用dp实现。
code:
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,t,a[101],b[25001];
int main()
{
cin>>t;
while (t--)
{
cin>>n;
memset(b,0,sizeof(b));
b[0]=1;
int ans=n;
for (int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n);
for (int i=1;i<=n;i++)
{
if (b[a[i]])
{
ans--;
continue;
}
for (int j=a[i];j<=a[n];j++) b[j]|=b[j-a[i]];
}
cout<<ans<<endl;
}
return 0;
}