给出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
仍然是暴力加尺取。
代码:
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int flag; int main() { int n; int s[1000]; scanf("%d",&n); for(int i = 0;i < n;i ++) { scanf("%d",&s[i]); } sort(s,s + n); for(int i = 0;i < n - 3;i ++) { for(int j = i + 1;j < n - 2;j ++) { int l = j + 1,r = n - 1; while(l < r) { int d = s[i] + s[j] + s[l] + s[r]; if(d < 0) { l ++; } else if(d > 0) { r --; } else { flag = 1; break; } } if(flag) break; } if(flag) break; } if(flag) printf("Yes"); else printf("No"); }