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

    1090 3个数和为0

    基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
    收藏
    关注
    给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等。从中找出所有和 = 0的3个数的组合。如果没有这样的组合,输出No Solution。如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则按照第二小的数排序。
    Input
    第1行,1个数N,N为数组的长度(0 <= N <= 1000)
    第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
    Output
    如果没有符合条件的组合,输出No Solution。
    如果有多个,按照3个数中最小的数从小到大排序,如果最小的数相等则继续按照第二小的数排序。每行3个数,中间用空格分隔,并且这3个数按照从小到大的顺序排列。
    Input示例
    7
    -3
    -2
    -1
    0
    1
    2
    3
    Output示例
    -3 0 3
    -3 1 2
    -2 -1 3
    -2 0 2
    -1 0 1

    题目不错,可惜我有点傻,一开始准备暴力,结果写到一半发现行不通,于是转为二分,
    然而二分出现了一个很小的失误,然后连改了好几次,才发现.
     1 #include <bits/stdc++.h>
     2 #define N 1005
     3 using namespace std;
     4 int k[N],n;
     5 bool Find(int a){
     6   int begin=0,end=n-1;
     7   while(begin<=end){
     8     int mid=(begin+end)>>1;
     9     if(k[mid]>a){
    10       end=mid-1;
    11     }else if(k[mid]<a){
    12       begin=mid+1;
    13     }else{
    14       return true;
    15     }
    16   }
    17   return false;
    18 }
    19 int main(){
    20   scanf("%d",&n);
    21   for(int i=0;i<n;i++){
    22     scanf("%d",&k[i]);
    23   }
    24   sort(k,k+n);
    25   bool prime=true;
    26   for(int i=0;i<n;i++)
    27     for(int j=i+1;j<n;j++){
    28       int ans=-(k[i]+k[j]);
    29       if(ans<=k[j])
    30           break;
    31       if(Find(ans)){
    32         prime=false;
    33         printf("%d %d %d
    ",k[i],k[j],ans);
    34       }
    35     }
    36   if(prime)
    37     printf("No Solution
    ");
    38   return 0;
    39 }
  • 相关阅读:
    hdu5360 Hiking(水题)
    hdu5348 MZL's endless loop(欧拉回路)
    hdu5351 MZL's Border(规律题,java)
    hdu5347 MZL's chemistry(打表)
    hdu5344 MZL's xor(水题)
    hdu5338 ZZX and Permutations(贪心、线段树)
    hdu 5325 Crazy Bobo (树形dp)
    hdu5323 Solve this interesting problem(爆搜)
    hdu5322 Hope(dp)
    Lightoj1009 Back to Underworld(带权并查集)
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/7372130.html
Copyright © 2011-2022 走看看