要注意sum+a[i]的位置,我放错了,不知道为什么会re
#include<iostream>
#include<cstring>
#define int long long
using namespace std;
int n,m,ans,a[30],vis[2020];
int f[2020];
int maxs;
void check(){int sum=0;vis[0]=1;for(int i=1;i<=n;i++){if(f[i])continue;for(int j=sum;j>=0;j--){if(vis[j]&&!vis[j+a[i]])vis[j+a[i]]=1,ans++;}sum+=a[i];}
}
void dfs(int pos,int num){if(num==m){memset(vis,0,sizeof(vis));ans=0;check();maxs=max(maxs,ans);return;}for(int i=pos;i<=n;i++){f[i]=1;dfs(i+1,num+1);f[i]=0;}
}
signed main(){cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];dfs(1,0);cout<<maxs;return 0;
}