n<=20,那还说啥了,直接dfs; #include <bits/stdc++.h> using namespace std; int n,k; int a[22]; int ans=0; int used[22]; void dfs(int x,int sum) { if(sum==k) { ans++; return; } if(sum>k) { return ; } if(sum<k) { for(int i=x+1;i<=n;i++) { dfs(i,sum+a[i]); } } return ; } /* run this program usi...