您的位置:首页 > 编程语言 > Go语言

三数之和

2017-03-21 21:48 32 查看
//从键盘输入一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组

//O(N^2)

#include<iostream>
#include<algorithm>
using namespace std;
class sum
{
int size;
int *arr;
public:
sum(int s,int *a)
{
size=s;
arr=a;
}
void f()
{
sort(arr,arr+size);

int i,j,k;
for(i=0;i<=size-3&&arr[i]<=0;i++)
{
j=i+1;
k=size-1;
while(j<k)
{
if(arr[j]+arr[k]>(-arr[i]))
{
k--;
}
else if(arr[j]+arr[k]<(-arr[i]))
{
j++;
}
else
{
cout<<"("<<*(arr+i)<<"  "<<*(arr+j)<<"  "<<*(arr+k)<<")"<<endl;
break;
}
}
}
}
};
int main()
{
int size;
int a[100];
cin>>size;
for(int i=0;i<size;i++)
{
cin>>a[i];
}
sum my(size,a);
my.f();
return 0;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  algorithm-design