前言
該題並不是很難,只要會運用陣列就能夠實現,但如何用更簡單的方式實現是值得我們深思的問題…
下面是我借鑑 其他博主 改善的**
#include
using
namespace std;
double gx[
1010][
1010];
bool ***[
1010];
//bool型別更快於int型別,位數更少
intread()
***[num]
= flag;
return num;
}void
print
(int a,
int b)
intmain()
for(
int i=
0; i
)for
(int j=
0; j
int a =
read()
, pa =
read()
;double max1=
0,max2=0;
for(
int i=
0; i
)//double值不能直接比較,對吧?if(
fabs
(max1-gx[a]
[pa]
)<
1e-17
&&fabs
(max2-gx[pa]
[a])
<
1e-17
)else
return0;
}
為什麼 flag 有 bool 型別就會出現超時???
討論形式是對其他博主的**進行思考->其他博主
(該博主的**也能夠ac的)
①、該博主的解題**
#include
using
namespace std;
double friends[
1000][
1000];
bool ***[
1000];
//0--man 1--woman
intread()
while
(a ==
'-'|| a >=
'0'&&a <=
'9')
a =getchar()
;}***[ans]
= flag;
return ans;
}void
print
(int a,
int b)
intmain()
for(
int i =
0; i
.size()
; i++)}
}int cp1 =
read()
, cp2 =
read()
;double max1 =
0, max2 =0;
for(
int i =
0; i
(max1 == friends[cp1]
[cp2]
&& max2 == friends[cp1]
[cp2]
)else
for(
int i =
0; i
return0;
}
②、通過觀察能夠發現我的**思路與上述博主的**思路基本一致,但又有所不同——判斷double值之間是否相等。
//本人判斷
fabs
(max1-gx[a]
[pa]
)<
1e-17
&&fabs
(max2-gx[pa]
[a])
<
1e-17
//上述博主判斷
max1 == friends[cp1]
[cp2]
&& max2 == friends[cp1]
[cp2]
這裡就很奇怪,按照常理來說,double值屬於浮點值,而浮點數在計算機中並不能精確的表示是不能直接進行比較的,那麼為什麼這裡又行了?
③、我猜想是不是測試平台的資料有問題,例如只取前幾位,於是我修改上述博主的判斷。
//上述博主判斷原始碼
max1 == friends[cp1]
[cp2]
&& max2 == friends[cp1]
[cp2]
//修改後
max1 == max2
雖然這裡沒能解決浮點問題,但很好地引起我們對計算機原理的思考,而不單單侷限於做題本身,你說對吧? 秀恩愛分得快
網際網路上每天都有大量人發布大量 我們通過分析這些 可以分析人與人之間的親密度。如果一張 上出現了 k 個人,這些人兩兩間的親密度就被定義為 1 k。任意兩個人如果同時出現在若干張 裡,他們之間的親密度就是所有這些同框 對應的親密度之和。下面給定一批 請你分析一對給定的情侶,看看他們分別有沒有親密度...
秀恩愛分得快 25分
古人云 秀恩愛,分得快。網際網路上每天都有大量人發布大量 我們通過分析這些 可以分析人與人之間的親密度。如果一張 上出現了 k 個人,這些人兩兩間的親密度就被定義為 1 k。任意兩個人如果同時出現在若干張 裡,他們之間的親密度就是所有這些同框 對應的親密度之和。下面給定一批 請你分析一對給定的情侶,...
秀恩愛分得快 25分
古人云 秀恩愛,分得快。網際網路上每天都有大量人發布大量 我們通過分析這些 可以分析人與人之間的親密度。如果一張 上出現了 k 個人,這些人兩兩間的親密度就被定義為 1 k。任意兩個人如果同時出現在若干張 裡,他們之間的親密度就是所有這些同框 對應的親密度之和。下面給定一批 請你分析一對給定的情侶,...