• 51nod 1267 4个数和为0


    给出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");
    }
  • 相关阅读:
    JS可改变列宽table
    无图片,用css border实现尖三角
    IE6下position:fixed;兼容
    巧用cssText属性批量操作样式
    Java
    Java
    Java
    JRebel
    Spring
    ActiveMQ
  • 原文地址:https://www.cnblogs.com/8023spz/p/10874103.html
Copyright © 2020-2023  润新知