四個數和爲0(二分

題目
給出N個整數,你來判斷一下是否能夠選出4個數,他們的和爲0,可以則輸出"Yes",否則輸出"No"。
Input
第1行,1個數N,N爲數組的長度(4 <= N <= 1000) 第2 - N + 1行:Ai(-10^9 <= Ai <= 10^9)
Output
如果可以選出4個數,使得他們的和爲0,則輸出"Yes",否則輸出"No"。
Sample Input
5
-1
1
-5
2
4
Sample Output
Yes
Sponsor

解題思路
排序+二分

代碼如下

#include<iostream>
#include<algorithm>
using namespace std;
long long a[1010];
int main()
{
	long long i,j,l,r;
	long long n;
	long long ans;
	int flag=0;
	cin>>n;
	for(i=0;i<n;i++)
	   cin>>a[i];
	sort(a,a+n);
	for(i=0;i<n;i++)
	{
		for(j=i+1;j<n;j++)
		{
			ans=-a[j]-a[i];
			l=j+1;
			r=n-1;
			while(l<r)
			{
				if(a[l]+a[r]==ans)
				{
					cout<<"Yes"<<endl;
					return 0;
				}
				else if(a[l]+a[r]>ans)
				  r--;
				else if(a[l]+a[r]<ans)
				  l++;
			}
		} 
	}
	cout<<"No"<<endl;
	return 0; 
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章