#include
#include
using namespace std ;
int a[1000] = {0} , n ;
int count = 0 ;
void dfs(int sum , int i) {
if(sum == 0) {
count++ ;
return ;
}
for( int k = i ; k < n ; k++)
if(i == k||a[k] != a[k-1])
dfs(sum - a[k] , k+1) ;
}
int main() {
int sum ;
cin >> sum ;
cin >> n ;
for(int i = 0 ; i < n ; i++)
cin >> a[i] ;
dfs(sum,0);
cout << count << endl ;
}
给出一个整数sum,以及n个数。若能用n个数当中的一些数组成sum。问有多少种组合方法 例如: 输入: 4 6 4 3 2 2 1 1 Sums of 4: 4 3+1 2+2 2+1+1 则输出: 4
转载于:https://www.cnblogs.com/NYNU-ACM/p/4236853.html