/*********************************
* 日期:2015-01-29
* 作者:SJF0115
* 题目: 在由N个正整数的集合S中,找出最大元素C,满足C=A+B,其中A,B都是集合S中的元素
* 来源:百度
* 博客:
**********************************/
#include <iostream>
#include <algorithm>
using namespace std;
int FindSum(int A[],int n){
// 排序
sort(A,A+n);
int left,right,sum;
// i = C
for(int i = n - 1;i >= 2;--i){
left = 0,right = i - 1;
// 判断是否有A + B = i
while(left < right){
sum = A[left] + A[right];
if(sum == A[i]){
return A[i];
}//if
else if(sum > A[i]){
--right;
}
else{
++left;
}
}//while
}//for
return -1;
}
int main(){
int A[] = {5,7,3,0,9,11,8,13,100};
int n = 9;
cout<<FindSum(A,n)<<endl;;
return 0;
}
时间复杂度O(n*n)