1. /*-------------------------------------------------------*/
  2. /*寻找和为定值的两个数
  3. 输入一个数组A[0,N-1]和一个数字Sum,在数组中查找
  4. 两个数Ai,Aj,是真的Ai+Aj=Sum*/
  5. /*解法一:暴力求解*/
  6. /*解法二:一个数组两头扫*/
  7.  
  8. void TwoSum(int data[],unsigned int length, int sum){
  9. //sort(data,data+length) 如果数组是有序的,那就事先排好序O(NlonN)
  10. int begin=;
  11. int end=;ength-;
  12. while(begin<end){
  13. long currSum=data[begin]+data[end];
  14. if(currSum==sum){
  15. printf("%d %d\n",data[begin],data[end]);
  16. //如果需要所有满足条件的数组对,则需要加上下面两条语句
  17. //begin++;
  18. //end--;
  19. break;
  20. }
  21. else{
  22. if(currSum<sum) begin++;
  23. else end--;
  24. }
  25. }
  26. }
  27. /*-------------------------------------------------------*/
  28. /*寻找何为定值的m个数(不考虑存在负数的情况)*/
  29. /*已知数组A[0...N-1],给定某数值sum,找出数组中的若干个数,
  30. 使得这些数的和为sum*/
  31. int a[]={,,,,};
  32. int size=sizeof(a)/sizeof(int);
  33. int sum=;//sum为计算的和
  34.  
  35. //x[]为最终解,x与a下标对应.i为考察x[i]是否加入,has表示当前的和
  36. void EnumNumber(bool* x,int i,int has){
  37. if(i>=size) return ;
  38. if(has+a[i]==sum){//如果当前的和加上a[i]满足sum
  39. x[i]=true;//代表a[i]要输出
  40. Print(x);//这个打印函数没写,自己可以加上去
  41. x[i]=false;//改为false,准备下一轮
  42. }
  43.  
  44. x[i]=true;
  45. EnumNumber(x,i+,has+a[i]);
  46.  
  47. x[i]=false;
  48. EnumNumber(x,i+,has);
  49. }
  50.  
  51. int main(){
  52. bool* x=new bool[size];
  53. memset(x,,size);
  54. EnumNumber(x,,);
  55. delete[] x;
  56. return ;
  57. }
  58. /*考虑负数的情况*/
  59. /*
  60. 可对整个数组A[0...N-1]进行正负排序,使得负数都在前面,正数都在后面
  61. 使用剩余正数的和作为分支限定的约束
  62. 如果A[i]为负数,全部正整数都算上还不够,就不能选A[i]
  63. 如果递归进入了正数范围,按照数组是全正数的情况正常处理*/

在数组中寻找和为定值的n个数的更多相关文章

  1. 【Data Structure & Algorithm】在排序数组中查找和为定值的两个数

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

  2. (1)Two Sum--求数组中相加为指定值的两个数

    Given an array of integers, find two numbers such that they add up to a specific target number. The ...

  3. 【跟着子迟品 underscore】如何优雅地写一个『在数组中寻找指定元素』的方法

    Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

  4. Coursera Algorithms week3 快速排序 练习测验: Selection in two sorted arrays(从两个有序数组中寻找第K大元素)

    题目原文 Selection in two sorted arrays. Given two sorted arrays a[] and b[], of sizes n1 and n2, respec ...

  5. js数组去重 数组拼接 替换数组中的指定值 递归数组 判断数组中是否存在指定值 数组求和 根据条件判数组值

    这是学习过程中记录的一些关于数组操作的常用属性或方法,记录一下方便以后使用. // 数组去重 var arr1 = [1,1,2,3,4,5,6,3,2,4,5,'a','b','c','a',6,7 ...

  6. 在数组中寻找出现次数大于N/K的数

    给定一个int[]数组,给定一个整数k,打印所有出现次数大于N/k的数,没有的话,给出提示信息. === 核心思想:一次在数组中删除K个不同的数,不停的删除,直到剩下的数的种类不足K就停止删除,那么如 ...

  7. Java实现找出数组中重复次数最多的元素以及个数

    /**数组中元素重复最多的数 * @param array * @author shaobn * @param array */ public static void getMethod_4(int[ ...

  8. 算法笔记_041:寻找和为定值的多个数(Java)

    目录 1 问题描述 2 解决方案 1 问题描述 输入两个整数n和sum,要求从数列1,2,3,...,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来. 2 解决方案 上述问题 ...

  9. 算法笔记_037:寻找和为定值的两个数(Java)

    目录 1 问题描述 2 解决方案 2.1 排序夹逼法   1 问题描述 输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个整数.如果有多对数的和等于输入的整数,输出任意一对即 ...

随机推荐

  1. 微软BI 之SSIS 系列 - 通过 OLE DB 连接访问 Excel 2013 以及对不同 Sheet 页的数据处理

    文章更新历史 2014年9月7日 - 加入了部分更新内容,在文章最后提到了关于不同 Office Excel 版本间的连接问题. 开篇介绍 这篇文章主要总结在 SSIS 中访问和处理 Excel 数据 ...

  2. vim 在行首 行尾添加字符

    在行首添加字符: %s/^/your_word/ 在行尾添加字符 %s/$/your_word/

  3. ionic 001

    安装和穿件app npm install -g cordova ionic 使用模板创建app ionic start myApp blank ionic start myApp tabs ionic ...

  4. InfluxDB源码目录结构解析

    操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 influxdata主目录结构 [root@localhost ...

  5. RMAN-05541: no archived logs found in target database

    执行 duplicate target databaseto orcl from active database nofilenamecheck报错如下: RMAN> duplicate tar ...

  6. [AaronYang]那天有个小孩跟我说Js-NodeJS[AY0]-EJS

    按照自己的思路学习Node.Js 随心出发.EJS是Node.js中express框架中使用的一个模版引擎,当然还有Jade 我的学习就靠网上查资料,没有买书系统学,自己整理,如果有用了哪位大神的代码 ...

  7. SNF快速开发平台MVC-富文本控件集成了百度开源项目editor

    一.效果如下: 二.在框架当中调用代码如下: 1.在js里配置如下: <script type="text/javascript"> var viewModel =fu ...

  8. MXNET:欠拟合、过拟合和模型选择

    当模型在训练数据集上更准确时,在测试数据集上的准确率既可能上升又可能下降.这是为什么呢? 训练误差和泛化误差 在解释上面提到的现象之前,我们需要区分训练误差(training error)和泛化误差( ...

  9. sklearn linear_model,svm,tree,naive bayes,ensemble

    sklearn linear_model,svm,tree,naive bayes,ensemble by iris dataset .caret, .dropup > .btn > .c ...

  10. 什么是位、字节、字、KB、MB (转)

    回顾一下按位操作符和移位操作符的知识,顺便复习一下位相关的基础知识. 位:"位(bit)"是电子计算机中最小的数据单位.每一位的状态只能是0或1. 字节:8个二进制位构成1个&qu ...