算法数据结构试题——在数组中找出已知和的组成数

转载 2012年03月28日 18:53:58

已知有12个数 
现在知道其中的几个数的和 
要求知道这个和是哪几个数的和 
把所有的组合都找出来 
谢谢先,帮朋友问的 


  1. /* 
  2.  *不知道符不符合楼主要求,测试了,编译可通过。 
  3.  */  
  4. #include <stdio.h>  
  5. int main(void)  
  6. {  
  7.     int sum(int [], int);  
  8.     int output(int [], int);  
  9.     /*已知的12个整数*/  
  10.     int num[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};  
  11.     int tag = 45; /*已知的和值*/  
  12.     int mod;  
  13.     /*mod第12位对应12个整数,一共有4095种情况*/  
  14.     for(mod = 1; mod < 4096; ++mod)  
  15.     {  
  16.         if(tag == sum(num, mod))  
  17.         {  
  18.             output(num, mod);  
  19.             printf("\n");  
  20.         }  
  21.     }  
  22.     return 0;  
  23. }  
  24. /*计算mod情况下的和*/  
  25. int sum(int num[], int mod)  
  26. {  
  27.     int tmp_avail[12];  
  28.     int tmp_sum = 0;  
  29.     int i;  
  30.     for(i = 11; i >= 0; --i)  
  31.     {  
  32.         tmp_avail[i] = (mod >> i) % 2;  
  33.         tmp_sum += tmp_avail[i] * num[i];  
  34.     }  
  35.     return tmp_sum;  
  36. }  
  37. /*输出符合要求的整数组*/  
  38. int output(int num[], int mod)  
  39. {  
  40.     int tmp_avail[12];  
  41.     int i;  
  42.     for(i = 0; i < 12; ++i)  
  43.     {  
  44.         tmp_avail[i] = (mod >> i) % 2;  
  45.         if(tmp_avail[i] == 1)  
  46.         {  
  47.             printf("%d ", num[i]);  
  48.         }  
  49.     }  
  50.     return 1;  


相关文章推荐

数据结构面试题总结5——数组:找出数组中唯一一个出现一次的元素

问题描述:一个数组其中有一个元素出现了一次(奇次),其他元素都出现两次(偶数次数),找出出现一次(奇次)的元素。 分析:碰到这种偶次奇次的问题,首先要想一下位运算中的异或。一个数异或本身为0,一个数...
  • B_Allen
  • B_Allen
  • 2015年05月30日 13:23
  • 723

算法与数据结构面试题(4)-在二元树中找出和为某一值的所有路径

题目 题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如输入整数22 和如下二元树 ...

算法与数据结构面试题(14)-在数组中查找2个数的和为已知数

题目 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。...

[面试题] 已知比例,找出数组中出现较多的元素

问题摘自《编程之美》。问题1:一个无序数组中某一个元素A的出现次数大于总数的1/2,如何找到它?问题2:一个无序数组中,如果有三个元素A、B、C的出现次数都大于总数的1/4,如何找到它们? 答案1:a...

算法数据结构面试题——标记数组在矩阵特征识别中的应用

题目:有一个矩阵(10*10),元素值只能为0或1,现在写一个函数判断一下有没有一行都为1,且有一列都为0(除了该行的这个元素为1外)。现要求程序只需要扫描该矩阵一遍,即可得出结果。 来源:互联网,...

数据结构面试题1.2.5-在二元树中找出和为某一值的所有路径

package questions; import java.util.ArrayList; /** * @title 在二元树中找出和为某一值的所有路径 * @question 输入一个整数...

Java数据结构约瑟夫问题和腾讯面试题快慢指针找出中间节点

约瑟夫问题:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个...

算法与数据结构面试题(3)-求子数组的最大和

题目 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2,...

数据结构和算法设计专题之---判断两个链表是否相交并找出交点

题目: 一个比较经典的问题,判断两个链表是否相交,如果相交找出他们的交点。 首先来看一下如何判断两个链表是否存在相交的节点: 思路: 1、碰到这个问题,第一印象是采用hash来判断...

数据结构面试题总结1——数组:求最大、次大值

一般大家一开始想到的办法就是一次循环,记录下最大值和最小值。或者就是用两次冒泡,找到最大值和次大值。 这两种方法实践复杂度差不多都是O(2n),如果数组很长,效率还是不够高的。 注意:直接排序...
  • B_Allen
  • B_Allen
  • 2015年05月28日 21:03
  • 839
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法数据结构试题——在数组中找出已知和的组成数
举报原因:
原因补充:

(最多只允许输入30个字)