51Nod_1267 4个数和为0
http://www.51nod.com/Challenge/Problem.html#!#problemId=1267
题目
给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No"。
输入
第1行,1个数N,N为数组的长度(4 <= N <= 1000)。第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
输出
如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No"。
样例输入
5
-1
1
-5
2
4
样例输出
Yes
分析
排序,具体看程序。
C++程序
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1003;
int a[N];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++){
int tmp=-(a[i]+a[j]);
int l=j+1,r=n-1;
while(l<=r){
if(a[l]+a[r]==tmp){
cout<<"Yes"<<endl;
return 0;
}
else if(a[l]+a[r]<tmp)
l++;
else
r--;
}
}
cout<<"No"<<endl;
return 0;
}