zoukankan      html  css  js  c++  java
  • 51nod 1090 3个数和为0

    给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。
     

    输入

    第1行,1个数N,N为数组的长度(0 <= N <= 1000)
    第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)

    输出

    如果没有符合条件的组合,输出No Solution。
    如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则继续按照第二小的数排序。每行3个数,中间用空格分隔,并且这3个数按照从小到大的顺序排列。

    输入样例

    7
    -3
    -2
    -1
    0
    1
    2
    3

    输出样例

    -3 0 3
    -3 1 2
    -2 -1 3
    -2 0 2
    -1 0 1



    暴力加尺取,找出所有的三个数组合,每次选定一个数作为最小的,尺取找另两个满足条件的数。
    代码:
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    int no;
    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 - 2;i ++) {
            int l = i + 1,r = n - 1;
            while(l < r) {
                int d = s[l] + s[i] + s[r];
                if(d < 0) {
                    l ++;
                }
                else if(d > 0) {
                    r --;
                }
                else {
                    printf("%d %d %d
    ",s[i],s[l],s[r]);
                    no ++;
                    l ++;
                    r --;
                }
            }
        }
        if(!no) printf("No Solution");
    }
  • 相关阅读:
    JavaEE高级-JPA学习笔记
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
  • 原文地址:https://www.cnblogs.com/8023spz/p/10874023.html
Copyright © 2011-2022 走看看