已知有12个数 现在知道其中的几个数的和 要求知道这个和是哪几个数的和 把所有的组合都找出来 谢谢先,帮朋友问的 /* *不知道符不符合楼主要求,测试了,编译可通过。 */ #include <stdio.h> int main(void) { int sum(int [], int); int output(int [], int); /*已知的12个整数*/ int num[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int tag = 45; /*已知的和值*/ int mod; /*mod第12位对应12个整数,一共有4095种情况*/ for(mod = 1; mod < 4096; ++mod) { if(tag == sum(num, mod)) { output(num, mod); printf("\n"); } } return 0; } /*计算mod情况下的和*/ int sum(int num[], int mod) { int tmp_avail[12]; int tmp_sum = 0; int i; for(i = 11; i >= 0; --i) { tmp_avail[i] = (mod >> i) % 2; tmp_sum += tmp_avail[i] * num[i]; } return tmp_sum; } /*输出符合要求的整数组*/ int output(int num[], int mod) { int tmp_avail[12]; int i; for(i = 0; i < 12; ++i) { tmp_avail[i] = (mod >> i) % 2; if(tmp_avail[i] == 1) { printf("%d ", num[i]); } } return 1; }