1.两个数
void f(vector<int> A,int sum)
{
sort(A.begin(),A.end());
for(int i=0,j=A.size()-1;i<j;)
{
if(A[i]+A[j]==sum)cout<<A[i++]<<" "<<A[j--]<<endl;
else if(A[i]+A[j]<sum)++i;
else --j;
}
}
2.三个数void f(vector<int> A,int sum)
{
int subsum;
sort(A.begin(),A.end());
for(int i=0;i<=n-3;++i)
{
subsum=sum-A[i];
for(int j=i+1,k=A.size()-1;j<k;)
{
if(A[j]+A[k]==subsum)cout<<A[i]<<" "<<A[j++]<<" "<<A[k--]<<endl;
else if(A[j]+A[k]<subsum)++j;
else --k;
}
}
}