数组中找两个数使其和等于输入数
来源:互联网 发布:淘宝浏览器秒杀插件 编辑:程序博客网 时间:2024/05/22 02:38
/********************************************************************题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。方法:1,分别从数组前,数组后向中间查找。直到前后相遇!!2,当前得到currentSum>sum说明:大的数太大(数组递增,后面的数太大)。 应该将指向最后的标记向前挪动3,当前得到currentSum<sum说明:大的数太小(数组递增,前面的数太小)。 应该将指向最后的标记向后挪动4,当前得到currentSum=sum说明:找到答案***************************************************************************/#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<cstdlib>#include<time.h>using namespace std;void Random(int a[],int n){ int i=0; srand( (unsigned)time( NULL ) ); while(i<n) { a[i++]=rand()/999; }}template <class T>struct numSum{ T big; T small;};bool FindTwoNumbers(int data[],unsigned int length,int sum, numSum <int> &num ){ //num1,num2采用的是地址,如果方法内改变则改变的是调用实参的值 bool found = false; if(length < 1) return found; int begin = 0; int end = length - 1; while(end > begin) { long curSum = data[begin] + data[end]; if(curSum == sum) { num.small = data[begin]; num.big = data[end]; found = true; break; } else if(curSum > sum) end--; else begin++; } return found;}int main(){ int a[20]; Random(a,20); for(int i=0;i<20;i++) { cout<<" "<<a[i]<<" "; } cout<<endl<<"-------------------"<<endl; sort(a,a+20); for(int i=0;i<20;i++) { cout<<" "<<a[i]<<" "; } cout<<endl<<"-------------------"<<endl; numSum <int> number; int sum=25; FindTwoNumbers(a, 20,sum, number); cout<<number.small<<" + "<<number.big<<" = "<<sum<<endl; return 0;}/****************************************** 31 25 31 26 21 28 1 12 32 7 4 11 20 14 23 20 28 8 25 5------------------- 1 4 5 7 8 11 12 14 20 20 21 23 25 25 26 28 28 31 31 32-------------------4 + 21 = 25Process returned 0 (0x0) execution time : 2.007 sPress any key to continue.*******************************************
- 【100题】第十四题(数组中找两个数使其和等于输入数)
- 数组中找两个数使其和等于输入数
- 在排序数组中寻找两个数使其和等于给定数
- 【算法题】数组中找到两个数,使其和等于某个数
- 1.无序数组中找出两个数使其和等于给定值
- Two sum(在数组中找两个数,使其和为指定值)
- 输入两个整数n和m,从0-n中随意取几个数,使其和等于m
- 从数组中找出其和等于S的两个数
- 算法讨论(七)--已排序数组中寻找两个数,其和等于给定的数
- 有序数组中两个数的和等于一个输入值的函数
- 在数组中求出两个数,使他们的和等于给定的一个数
- 中兴面试题 : 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m. --java算法解决方法。
- 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m
- 输入两个整数n和m,从数列1,2,3....n中随意取几个数,使其和等于m
- 动态规划——5 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m
- 武大邀请赛 第八题 Key Logger
- MySql导入导出数据库(含远程导入导出)
- hdu1166之线段树
- orcl密码过时和权限授予
- S3C2440开发板上BMP图片的显示之一
- 数组中找两个数使其和等于输入数
- Android实现带Tab页引导的ViewPager
- hust 1010 The Minimum Length (KMP 最短循环节)
- 光传输与微数据
- 窗体链接
- uva 572Oil Deposits
- PyQt的QString和python的string的区别
- 找出以下100个50位数之和的前十位数字
- 网络游戏外挂编写基础