5-11 基於詞頻的檔案相似度(30分)
5-11 基於詞頻的檔案相似度 (30分)
實現一種簡單原始的檔案相似度計算,即以兩檔案的公共詞彙佔總詞彙的比例來定義相似度。為簡化問題,這裡不考慮中文(因為分詞太難了),只考慮長度不小於3、且不超過10的英文單詞,長度超過10的只考慮前10個字母。
輸入格式:
輸入首先給出正整數NN(\le 100≤100),為檔案總數。隨後按以下格式給出每個檔案的內容:首先給出檔案正文,最後在一行中只給出一個字元#,表示檔案結束。在NN個檔案內容結束之後,給出查詢總數MM(\le 10^4≤10
4
),隨後MM行,每行給出一對檔案編號,其間以空格分隔。這裡假設檔案按給出的順序從1到NN編號。
輸出格式:
針對每一條查詢,在一行中輸出兩檔案的相似度,即兩檔案的公共詞彙量佔兩檔案總詞彙量的百分比,精確到小數點後1位。注意這裡的一個“單詞”只包括僅由英文字母組成的、長度不小於3、且不超過10的英文單詞,長度超過10的只考慮前10個字母。單詞間以任何非英文字母隔開。另外,大小寫不同的同一單詞被認為是相同的單詞,例如“You”和“you”是同一個單詞。
輸入樣例:
3
Aaa Bbb Ccc
#
Bbb Ccc Ddd
#
Aaa2 ccc Eee
is at [email protected]
#
2
1 2
1 3
輸出樣例:
50.0%
33.3%
#include<iostream>
#include<algorithm>
#include<set>
#include<cstdio>
#include<string>
using namespace std;
char aa[105];
string a;
set<string> aaa[105];
bool panduan(string a1)
{
for(int i=0;i<a1.length();i++)
if(!isalpha(a1[i]))
return false;
return true;
}
int ToUpper(int c)
{
return tolower(c);
}
int main()
{
int n,i=0,j=0;
cin>>n;
for(i=0;i<n;i++)
{
while(cin>>aa&&aa[0]!='#')
{
for(j=0;aa[j];j++)
{
if(isalpha(aa[j]))
a+=aa[j];
else
{
int len=a.length();
if(len>=3)
{
if(len>10)
a[10]=0;
transform(a.begin(),a.end(),a.begin(),ToUpper);
if(panduan(a))
aaa[i].insert(a);
}
a="";
}
}
if(isalpha(aa[j-1]))
{
int len=a.length();
if(len>=3)
{
if(len>10)
a[10]=0;
transform(a.begin(),a.end(),a.begin(),ToUpper);
if(panduan(a))
aaa[i].insert(a);
}
}
}
}
int m;
cin>>m;
int a1,b1,x,y;
for(i=0;i<m;i++)
{
cin>>a1>>b1;
a1--;b1--;
x=0;y=0;
for(set<string>::iterator it=aaa[a1].begin();it!=aaa[a1].end();it++)
{
if(aaa[b1].count(*it)==1)
x++;
}
y=aaa[a1].size()+aaa[b1].size();
printf("%.1lf%%\n",(double)x/y);
}
}
相關推薦
5-11 基於詞頻的檔案相似度(30分)
5-11 基於詞頻的檔案相似度 (30分) 實現一種簡單原始的檔案相似度計算,即以兩檔案的公共詞彙佔總詞彙的比例來定義相似度。為簡化問題,這裡不考慮中文(因為分詞太難了),只考慮長度不小於3、且不超過10的英文單詞,長度超過10的只考慮前10個字母。 輸
7-6 集合相似度(25 分)
給定兩個整數集合,它們的相似度定義為:Nc/Nt×100%。其中Nc是兩個集合都有的不相等整數的個數,Nt是兩個集合一共有的不相等整數的個數。你的任務就是計算任意一對給定集合的相
計算圖片的相似度(深度學習)
轉載:https://blog.csdn.net/hjimce/article/details/50098483 一、相關理論 本篇博文主要講解2015年CVPR的一篇關於影象相似度計算的文章:《Learning to Compar
【LOJ#6041】事情的相似度(字尾自動機)
【LOJ#6041】事情的相似度(字尾自動機) 題面 LOJ 題解 \(\mbox{YCB}\)搬了這道題目。。。\(\mbox{QwQ}\) 還是用到\(lcp\)就是\(parent\)樹上的\(LCA\)的\(len\)。 每次詢問顯然就是區間內點的貢獻。 那麼考慮所有可能出現的點對。 顯然對於
SQL Server對比兩字串的相似度(函式演算法)
ALTER FUNCTION FNStrCompare (@Val1 VARCHAR(50),---比較字串1 @Val2 VARCHAR(50),---比較字串2 @Break VARCHAR(10) ---分隔符 ) RETURNS INT AS BEGIN DECLARE @
openshift/origin學習記錄(1)——基於二進位制檔案的安裝(單機版)
先決條件 開啟SELINUX 官方文件推薦開啟SELINUX,否則會導致安裝失敗。 修改/etc/selinux/config SELINUX=enforcing SELINUXTYPE=targeted 安裝docker # y
相似度(距離計算)彙總
一、說明相似性度量用以描述兩個向量之間的相似性,是一個值域為一維的二元函式。一般情況,相似性度量本質上指距離度量,只不過數值指示剛好相反,如果是距離的話,數值越小,距離越近,而相似度越大;如果是相似度的話,數值越小,相似度越小,而距離越大。相似性度量在機器學習中是一個非常基礎的概念,尤其在聚類、推薦系統等演算
Loadrunner 9.5/11 java vuser環境配置問題(已解決)
Loadrunner 9.5/11 使用java 開發vsuer script需要的環境配置 本文從兩個方面來講:windows 32位作業系統;windows 64 作業系統開始之前,先說下jav
矩陣式比較兩文字字串相似度(包含漢字)方法兩則(java程式碼)
package com.gsww.ctyxy.util; import java.text.NumberFormat; import java.util.Locale; /** * 比較兩個字串的相似度 */ public class AutomaticRating { /* pu
L2-005 集合相似度 (25 分) (STL——set)
-h line pin scripts 正整數 判斷 gin can 們的 鏈接:https://pintia.cn/problem-sets/994805046380707840/problems/994805070149828608 題目: 給
7-11 關鍵活動(30 分)
-h 兩個 tdi 最短 程序 lis 此外 開始 clu 7-11 關鍵活動(30 分) 假定一個工程項目由一組子任務構成,子任務之間有的可以並行執行,有的必須在完成了其它一些子任務後才能執行。“任務調度”包括一組子任務、以及每個子任務可以執行所依賴的子任務集。 比
07-圖5 Saving James Bond - Hard Version(30 分)
bond style n) capture end maximum imp ant bar This time let us consider the situation in the movie "Live and Let Die" in which James Bo
7-5 跳一跳(30 分)
做了 cout ria AR -o stream .... urn 現在 有一條長度為n的賽道,其中有m個陷阱,這些陷阱都位於整數位置,分別是a1,a2,....am,陷入其中則必死無疑。 開始時小人站在位置1,小人一次只能向前跳一步或兩步。顯然,如果有兩個挨著的陷阱,小人
7-2 列車調度 (25 分)
alt 問題 opened ons max esp spa lose code 題目: 樣例輸入: 98 4 2 5 3 9 1 6 7 樣例輸出: 4 思路: 要想得到最少的調度序列,那就要找出最少的下降序列的個數。拿上邊的例子來說:有如下四個下降序列 8 4 2
7-3 詞頻統計(30 分) 巧解
2018年8月15日 于山東 7-3 詞頻統計(30 分) 請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10%的單詞。 所謂“單詞”,是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的“
PAT 習題bitset 06-圖3 六度空間 (30 分)
包括 沒有 stream con 長度 text 翻轉 大量 集合 1 #include<iostream> 2 #include<string> 3 #include<bitset> 4 5 6 using names
11-雜湊4 Hashing - Hard Version (30 分)
Given a hash table of size N, we can define a hash function (. Suppose that the linear probing is used to solve collisions, we can easily obtain
7-11 社交網路圖中結點的“重要性”計算 (30 分)(Dijkstra演算法)
題意: 思路:對每個輸入的點跑一遍dijkstra演算法,然後對這個點到所有點的距離求和按公式輸出就可以了。 (這次嘗試了用陣列模擬連結串列來做最短路問題,重新整理了自己對最短路的理解) 這裡構造連結串列的過程我的理解一直有誤差,第一行的式子中參與程式碼構建的
7-7 六度空間 (30 分)
“六度空間”理論又稱作“六度分隔(Six Degrees of Separation)”理論。這個理論可以通俗地闡述為:“你和任何一個陌生人之間所間隔的人不會超過六個,也就是說,最多通過五個人你就能夠認識任何一個陌生人。”如圖1所示。 圖1 六度空間示意圖 “
7-7 六度空間 (30 分)(bfs)(c++簡短高效解決)
“六度空間”理論又稱作“六度分隔(Six Degrees of Separation)”理論。這個理論可以通俗地闡述為:“你和任何一個陌生人之間所間隔的人不會超過六個,也就是說,最多通過五個人你就能夠認識任何一個陌生人。”如圖1所示。 圖1 六度空間示意圖 “六度空間”理論雖然得到廣泛的認