已知有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;
- }