(1)如果是两个数,则可以先排序再用“夹逼”
#include<iostream>
#include<algorithm>
#include<map>
using namespace std;
typedef pair<int,int>Index;
Index findSum(int arr[],int len,int sum)
{
sort(arr,arr+len);
int start = 0;
int end = len -1;
while(start<end){
if(arr[start]+arr[end]<sum){
++start;
}
else if(arr[start]+arr[end]>sum)
{
--end;
}
else{
return make_pair(start,end);
}
}
}
int main()
{
int arr[]={1,2,4,5,6};
Index id;
int sum = 11;
id = findSum(arr,5,sum);
cout<<arr[id.first]<<"+"<<arr[id.second]<<endl;
return 0;
}
(2)如果是多个数,用递归算法
#include<vector>
#include<iostream>
using namespace std;
vector<int> ivec;
void findSum(int arr[],int n,int sum)
{
//cout<<n<<