求数组中和为某个值的一个组合
2015-06-28 15:54
267 查看
#include<iostream> #include<algorithm> using namespace std; //给定一个和,求数组中和为这个值的一组数,O(n) bool findTwoNumOfSum(int a[],int n,int sum,int &num1,int &num2) { int i=0,j=n-1; while(i<j) { if(a[i]+a[j]>sum) j--; if(a[i]+a[j]<sum) i++; if(a[i]+a[j]==sum) { num1=a[i]; num2=a[j]; return true; } } return false; } void print(int a[],int n) { for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; } void main() { int num1,num2; int a[]={1,8,2,4,0,2,9}; int n=sizeof(a)/sizeof(int); print(a,n); sort(a,a+n); print(a,n); findTwoNumOfSum(a,n,4,num1,num2); cout<<"num1:"<<num1<<"num2:"<<num2<<endl; system("pause"); }