/*-------------------------------------------------------*/
/*寻找和为定值的两个数
输入一个数组A[0,N-1]和一个数字Sum,在数组中查找
两个数Ai,Aj,是真的Ai+Aj=Sum*/
/*解法一:暴力求解*/
/*解法二:一个数组两头扫*/ void TwoSum(int data[],unsigned int length, int sum){
//sort(data,data+length) 如果数组是有序的,那就事先排好序O(NlonN)
int begin=;
int end=;ength-;
while(begin<end){
long currSum=data[begin]+data[end];
if(currSum==sum){
printf("%d %d\n",data[begin],data[end]);
//如果需要所有满足条件的数组对,则需要加上下面两条语句
//begin++;
//end--;
break;
}
else{
if(currSum<sum) begin++;
else end--;
}
}
}
/*-------------------------------------------------------*/
/*寻找何为定值的m个数(不考虑存在负数的情况)*/
/*已知数组A[0...N-1],给定某数值sum,找出数组中的若干个数,
使得这些数的和为sum*/
int a[]={,,,,};
int size=sizeof(a)/sizeof(int);
int sum=;//sum为计算的和 //x[]为最终解,x与a下标对应.i为考察x[i]是否加入,has表示当前的和
void EnumNumber(bool* x,int i,int has){
if(i>=size) return ;
if(has+a[i]==sum){//如果当前的和加上a[i]满足sum
x[i]=true;//代表a[i]要输出
Print(x);//这个打印函数没写,自己可以加上去
x[i]=false;//改为false,准备下一轮
} x[i]=true;
EnumNumber(x,i+,has+a[i]); x[i]=false;
EnumNumber(x,i+,has);
} int main(){
bool* x=new bool[size];
memset(x,,size);
EnumNumber(x,,);
delete[] x;
return ;
}
/*考虑负数的情况*/
/*
可对整个数组A[0...N-1]进行正负排序,使得负数都在前面,正数都在后面
使用剩余正数的和作为分支限定的约束
如果A[i]为负数,全部正整数都算上还不够,就不能选A[i]
如果递归进入了正数范围,按照数组是全正数的情况正常处理*/

在数组中寻找和为定值的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. 卡尔曼滤波(Kalman Filter) ZZ

    一.引言 以下我们引用文献[1]中的一段话作为本文的開始: 想象你在黄昏时分看着一仅仅小鸟飞行穿过浓密的丛林.你仅仅能隐隐约约.断断续续地瞥见小鸟运动的闪现.你试图努力地猜測小鸟在哪里以及下一时刻它会 ...

  2. 如何将revit模型背景设置为黑色

    Revit软件建模窗口默认的背景色为白色,在用惯了CAD的新用户转到Revit软件的时候,会对Revit白色的背景不太适应,跟AutoCAD一样,Revit提供自定义工作区背景颜色的功能--其实,你只 ...

  3. SQL2012 之 创建备份计划

    打开数据库,选择 管理 → 右键维护计划→选择新建维护计划,填写计划名称,如下图: 修改维护计划参数,如下图: 工具箱->备份数据库任务,拖到计划里,如下图: 编辑“备份数据库”任务,如下图: ...

  4. Excel如何固定表头,任意一行

    在日常Excel操作中,有时候内容比较多,需要将表头固定才能方便查看.那么,该如何固定表头呢?或者说如何固定任意一行我们制定的呢?下面以Excel2013进行详细的步骤讲解. 首先打开需要操作的Exc ...

  5. centos7 mysql数据库安装和配置(转, 未验证)

    一.系统环境 yum update升级以后的系统版本为 [root@yl-web yl]# cat /etc/redhat-release CentOS Linux release 7.1.1503 ...

  6. 何为编码 GBK 和 UTF8编码?GBK,GB2312与区位码有何关系?

    何为GBK,何为GB2312,与区位码有何渊源? 区位码是早些年(1980)中国制定的一个编码标准,如果有玩过小霸王学习机的话,应该会记得有个叫做“区位”的输入法(没记错的话是按F4选择).就是打四个 ...

  7. zabbix server is not running,the information dispalyed may not be current

    查看zabbix服务器和客户端的端口及进程都是正常启动,打印的日志也没什么异常,但是就是在主页提示zabbix server is not running 不防尝试改一下zabbix_server的配 ...

  8. Netflix开源类库archaius(一)概述

    archaius是什么,能做什么? archaius是Netflix公司开源项目之一,基于java的配置管理类库,主要用于多配置存储的动态获取.主要功能是对apache common configur ...

  9. tensorflow笔记9:nn_ops.bias_add 函数

    完整代码引入:from tensorflow.python.ops import nn_ops tensorflow version:1.9 代码演示: import os import tensor ...

  10. Mac安装crfpp

    Mac安装crfpp 步骤 git clone https://github.com/taku910/crfpp.git ./configure make sudo make install cd p ...