合并总数

来源:互联网 发布:黄金时时彩缩水软件 编辑:程序博客网 时间:2024/04/30 09:47

求正数数组内和为指定数字的组合总数

比如[5, 5, 10, 2, 3] 合并值为 15 :
有4种组合 : (5 + 10, 5 + 10, 5 + 5 + 2 + 3, 10 + 2 + 3)

只需输出组合总数即可,不需打印组合内容。


int fun(int a[], int n, int m){int **buf = new int*[n];for (int i = 0; i < n; i++){buf[i] = new int[m+1];}for (int i = 1; i <= m; i++){buf[0][i] = 0;}buf[0][0] = 1;if (a[0] <= m){        buf[0][a[0]] = 1;}for (int i = 1; i < n; i++){for (int j = 0; j <= m; j++){buf[i][j] = buf[i-1][j];if (j-a[i] >= 0){buf[i][j] += buf[i-1][j-a[i]];}}}int result = buf[n-1][m];for (int i = 0; i < n; i++){delete []buf[i];}delete buf;return result;}