#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");
}
求数组中和为某个值的一个组合
最新推荐文章于 2021-12-23 19:29:46 发布