title:zjm 有四個數列 a,b,c,d,每個數列都有 n 個數字。zjm 從每個數列中各取出乙個數,他想知道有多少種方案使得 4 個數的和為 0。
當乙個數列中有多個相同的數字的時候,把它們當做不同的數對待。
input:第一行:n(代表數列中數字的個數) (1≤n≤4000)
接下來的 n 行中,第 i 行有四個數字,分別表示數列 a,b,c,d 中的第 i 個數字(數字不超過 2 的 28 次方)
output:輸出不同組合的個數。
樣例:
input:
6-45 22 42 -16
-41 -27 56 30
-36 53 -37 77
-36 30 -75 -46
26 -38 -10 62
-32 -54 -6 45
output:
5分析:暴力列舉abcd中的每個數,四重迴圈,時間複雜度為o(pow(n,4))
總結:使用二分法時注意迴圈的控制條件,以及找到對應位置的判斷條件。
#include
#include
#define range 4010
using namespace std;
int a[range]
, b[range]
, c[range]
, d[range]
;int sumab[range * range]
, sumcd[range * range]
;int n =
0, index =
0, start =
0, ans =
0, low =
0, high =
0, i =
0, j =0;
void
makesum()
}sort
(sumab, sumab + index);}
void
fun(
int i)
else low = mid +1;
}for
(j = start; j < index && sumab[j]
+ sumcd[i]==0
; j++
) ans++;}
intmain()
cout << ans;
}
week4 作業B 四個數列
題目 zjm 有四個數列 a,b,c,d,每個數列都有 n 個數字。zjm 從每個數列中各取出乙個數,他想知道有多少種方案使得 4 個數的和為 0。當乙個數列中有多個相同的數字的時候,把它們當做不同的數對待。請你幫幫他吧!input 第一行 n 代表數列中數字的個數 1 n 4000 接下來的 n ...
week4作業 B 四個數列
zjm 有四個數列 a,b,c,d,每個數列都有 n 個數字。zjm 從每個數列中各取出乙個數,他想知道有多少種方案使得 4 個數的和為 0。當乙個數列中有多個相同的數字的時候,把它們當做不同的數對待。請你幫幫他吧!input 第一行 n 代表數列中數字的個數 1 n 4000 接下來的 n 行中,...
week4作業題 B 四個數列
zjm 有四個數列 a,b,c,d,每個數列都有 n 個數字。zjm 從每個數列中各取出乙個數,他想知道有多少種方案使得 4 個數的和為 0。當乙個數列中有多個相同的數字的時候,把它們當做不同的數對待。請你幫幫他吧!input 第一行 n 代表數列中數字的個數 1 n 4000 接下來的 n 行中,...