51nod 1267 4个数和为0
生活随笔
收集整理的這篇文章主要介紹了
51nod 1267 4个数和为0
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
給出N個整數(shù),你來判斷一下是否能夠選出4個數(shù),他們的和為0,可以則輸出"Yes",否則輸出"No"。 ?收起
仍然是暴力加尺取。
代碼: #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"); }
輸入
第1行,1個數(shù)N,N為數(shù)組的長度(4 <= N <= 1000) 第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)輸出
如果可以選出4個數(shù),使得他們的和為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"); }
?
轉(zhuǎn)載于:https://www.cnblogs.com/8023spz/p/10874103.html
總結(jié)
以上是生活随笔為你收集整理的51nod 1267 4个数和为0的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css display属性理解
- 下一篇: git移除某文件夹的版本控制