51 NOD 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
#include<iostream>
#include<math.h>
#include<algorithm>
#include<string>
#include<stdio.h>
#include<string.h>
using namespace std;
#define maxx  10000
int main()
{
    long long num[maxx];
    long long n;
    bool flag=false;
    int t;
    cin>>t;
    for(int i=0; i<t; i++)
        cin>>num[i];
    sort(num,num+t);
    for(int i=0; i<t; i++){
        for(int j=i+1; j<t; j++){
            for(int k=j+1; k<t; k++){
                if(num[i]+num[j]+num[k]==0){
                    cout<<num[i]<<" "<<num[j]<<" "<<num[k]<<endl;
                    flag=true;
                }
            }
        }
    }
    if(!flag)
        cout<<"No Solution";
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章