为什么这题贴的标签是“动态规划,dp”?
完全暴力就可以过啊!
#include<bits/stdc++.h>
using namespace std;
int t,m,a[40],b[1010],maxs,ans;
void dfs(int deep,int sum,bool flag){
if(sum>maxs) return;
if(flag) b[sum]++;
if(deep>m) return;
dfs(deep+1,sum,0);
dfs(deep+1,sum+a[deep],1);
}
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&m);
maxs=ans=0;
memset(b,0,sizeof(b));
for(int i=1;i<=m;i++){
scanf("%d",&a[i]);
maxs=max(maxs,a[i]);
}
dfs(1,0,0);
for(int i=1;i<=m;i++) ans+=b[a[i]];
printf("%d\n",ans-m);
}
return 0;
}