三個數和為零

2021-08-18 18:34:56 字數 858 閱讀 2458

給出乙個長度為n的無序陣列,陣列中的元素為整數,有正有負包括0,並互不相等。從中找出所有和 = 0的3個數的組合。如果沒有這樣的組合,輸出no solution。如果有多個,按照3個數中最小的數從小到大排序,如果最小的數相等則按照第二小的數排序。

input

第1行,1個數n,n為陣列的長度(0 <= n <= 1000)

第2 - n + 1行:a[math processing error](-10^9 <= a[math processing error] <= 10^9)

output

如果沒有符合條件的組合,輸出no solution。

如果有多個,按照3個數中最小的數從小到大排序,如果最小的數相等則繼續按照第二小的數排序。每行3個數,中間用空格分隔,並且這3個數按照從小到大的順序排列。

sample input

7 -3

-2 -1

0 1

2 3

sample output

-3 0 3

-3 1 2

-2 -1 3

-2 0 2

-1 0 1

#include

#include

using

namespace

std;

int a[1100], n;

int bsearch(int x)

return

false;

}//二分查詢

int main ()}}

if (flag) printf ("no solution\n");

return

0; }

陣列中三個數和為零

前面看到的問題是陣列a中,和為固定值sum的兩個數。我們一般的做法是先給陣列排序,然後陣列前後各有乙個下標i j,如果a i a j sum,則j 如果a i a j 有乙個類似的擴充套件問題就是 找到乙個是陣列中和為零的三個數,一般的解決方法也是設定三個下標變數,i,j和k。每次固定i,然後尋找滿...

三個數的和為0

給出乙個長度為n的無序陣列,陣列中的元素為整數,有正有負包括0,並互不相等。從中找出所有和 0的3個數的組合。如果沒有這樣的組合,輸出no solution。如果有多個,按照3個數中最小的數從小到大排序,如果最小的數相等則按照第二小的數排序。input 第1行,1個數n,n為陣列的長度 0 n 10...

三個數之和

b 問題 b 給定乙個由n個整數組成的陣列s,是否存在s中的三個數a,b,c使得 a b c 0?找出所有的不重複的和為0的三元組。注意 1.三元組的整數按照公升序排列 a0 c向前移一位,減小和 還要注意的是去掉重複的解,保證a和b都和上次的不同即可。如下 public class solutio...