ラダーマッチ練習--7-41類似性(25点)の集合(セットコレクション)

トピック:

ここに画像を挿入説明

分析:

この質問のセットは、最終的な数の二組の総数が整数に等しくされないように、無反復エレメントことセット性を保証として、収集セットが属するにそれが挿入され、入力の各要素に対して実行するために使用さに等しいです。セット1 + 2の要素の組数の要素数 - 両方のセットに共通の要素の数。一般的な2つの要素のコレクションを探す:コレクションの各要素を、このコレクションに別の要素があるかどうかを見つけるために、findメソッドを使用します。答えへの最後の部門。

コード:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <set>
using namespace std;

set<int> num[55];
int n,m,k;

int main()
{
    int val;
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&m);
        for(int j=1;j<=m;++j)
        {
            scanf("%d",&val);
            num[i].insert(val);
        }
    }
    scanf("%d",&k);
    int x1,x2;
    for(int i=1;i<=k;++i)
    {
        scanf("%d%d",&x1,&x2);
        int ans = 0;
        set<int>::iterator iter;
        for(iter=num[x1].begin();iter!=num[x1].end();++iter)
            if(num[x2].find(*iter) != num[x2].end())
                ans++;
        double res = 1.0*ans / (num[x1].size()+num[x2].size()-ans);
        res = res*100;
        printf("%.2f%%\n",res);
    }
    return 0;
}

公開された61元の記事 ウォン称賛7 ビュー3612

おすすめ

転載: blog.csdn.net/weixin_42469716/article/details/105310425