L2 005 集合相似度

2021-10-07 06:28:35 字數 2274 閱讀 4616

l2-005 集合相似度 (25分)

給定兩個整數集合,它們的相似度定義為:nc​ /n​t​​ ×100%。其中n​c

​​是兩個集合都有的不相等整數的個數,n​t​是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。

輸入格式:

輸入第一行給出乙個正整數n(≤50),是集合的個數。隨後n行,每行對應乙個集合。每個集合首先給出乙個正整數m(≤10^​4),是集合中元素的個數;然後跟m個[0,10 ^​9​​ ]區間內的整數。

之後一行給出乙個正整數k(≤2000),隨後k行,每行對應一對需要計算相似度的集合的編號(集合從1到n編號)。數字間以空格分隔。

輸出格式:

對每一對需要計算的集合,在一行中輸出它們的相似度,為保留小數點後2位的百分比數字。

輸入樣例:

3

3 99 87 101

4 87 101 5 87

7 99 101 18 5 135 18 99

21 2

1 3

輸出樣例:

50.00%

33.33%

#include

#include

int num[

2001];

int deno[

2001];

intcmp

(const

void

* a,

const

void

* b)

intmain()

if(!equal)gather[i]

[j - offset]

= c;

else offset +=1

;}qsort

(gather[i]

, j-offset,

sizeof

(int

), cmp)

; gather[i]

[j - offset]=-

1;//集合含有的都是正數,可以用-1來標記結尾

}scanf

("%d"

,&k)

;for

(int i =

0; i < k; i++

)//集合2遍歷完畢都沒有找到正確的值,因為已經對集合排序,

//所以gather[g1][index]之後的所有數都不會在g2中找到相同的

if(gather[g2]

[cindex]

> gather[g1]

[index]

)break

;//由於所有數遞增排序,g2[cindex]大於g1[index]時說明g2中沒有與g1[index]相同的數,結束遍歷

if(gather[g2]

[cindex]

== gather[g1]

[index]

)//找到g2中乙個與g1[index]相同的數後,num+1

cindex++;}

} deno[i]+=

2;//每次迴圈deno+2,迴圈結束後將deno減去num可以得到正確的deno

index++;}

//集合大小不一,若集合1先遍歷完,集合2每多1個數,deno+1

//集合2先遍歷完繼續像之前那樣找與gather[g1][index]相等的數,直到迴圈到-1

if(gather[g1]

[index]==-

1)while

(gather[g2]

[index++]!=

-1)deno[i]+=

1;else

if(gather[g2]

[index]==-

1)while

(gather[g1]

[index]!=-

1)if(gather[g2]

[cindex]

> gather[g1]

[index]

)break;if

(gather[g2]

[cindex]

== gather[g1]

[index]

) cindex++;}

index++

; deno[i]+=

1;} deno[i]

-= num[i]

; index =0;

}for

(int i =

0; i < k; i++

)}

L2 005 集合相似度

給定兩個整數集合,它們的相似度定義為 nc nt 100 其中nc是兩個集合都有的不相等整數的個數,nt是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。輸入格式 輸入第一行給出乙個正整數n 50 是集合的個數。隨後n行,每行對應乙個集合。每個集合首先給出乙個正整數m 1...

L2 005 集合相似度

給定兩個整數集合,它們的相似度定義為 nc nt 100 其中nc是兩個集合都有的不相等整數的個數,nt是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。輸入第一行給出乙個正整數n 50 是集合的個數。隨後n行,每行對應乙個集合。每個集合首先給出乙個正整數m 104 是集...

L2 005 集合相似度

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定兩個整數集合,它們的相似度定義為 nc nt 100 其中nc是兩個集合都有的不相等整數的個數,nt是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相似度。...