總時間限制:
1000ms
記憶體限制:
65536kb
描述
在文字分析中常用到n-gram串頻統計方法,即,統計相鄰的n個單元(如單詞、漢字、或者字元)在整個文字**現的頻率。假設有乙個字串,請以字元為單位,按n-gram方法統計每個長度為 n 的子串出現的頻度,並輸出最高頻度以及頻度最高的子串。所給的字串只包含大小寫字母,長度不多於500個字元,且 1 < n < 5。
如果有多個子串頻度最高,則根據其在序列中第一次出現的次序依次輸出,每行輸出乙個,如果最高頻度不大於1,則輸出no。
輸入第一行為n;
第二行為字串。
輸出輸出最高頻度以及頻度最高的所有子串。若最高頻度不大於1,只輸出一行no。
樣例輸入
3abcdefabcd
樣例輸出
2abcbcd
提示樣例中,所有的3-gram是:abc,bcd,cde,def,efa,fab,abc,bcd。最後面的cd不足以形成3-gram,則不考慮。這樣,abc 和 bcd 都出現了2次,其餘的只出現了1次。
**元培-from whf
思路:在比較的過程中不斷把未出現的子串加入陣列,出現的子串頻次加一
#include
#include
#include
#include
#include
#include
using namespace std;
int str[30]
;char buf[30]
[80];
intmain()
index++
;//繼續匹配下乙個子串}if
(!flag)
}int maxindex =0;
int maxn =0;
queueres;
//儲存最大頻次的子串們(因為可能有多個)
//找到最大頻次索引
for(
int i =
0; i < length;
++i)
}int cnt =0;
res.
push
(sub[maxindex]);
for(
int i =
0; i < length;
++i)}}
if(num[maxindex]
>1)
}else
system
("pause");
return0;
}
n gram串頻統計
描述 在文字分析中常用到n gram串頻統計方法,即,統計相鄰的n個單元 如單詞 漢字 或者字元 在整個文字 現的頻率。假設有乙個字串,請以字元為單位,按n gram方法統計每個長度為 n 的子串出現的頻度,並輸出最高頻度以及頻度最高的子串。所給的字串只包含大小寫字母,長度不多於500個字元,且 1...
NOI 26 n gram串頻統計
26 n gram串頻統計 總時間限制 1000ms 記憶體限制 65536kb 描述 在文字分析中常用到n gram串頻統計方法,即,統計相鄰的n個單元 如單詞 漢字 或者字元 在整個文字中出現的頻率。假設有乙個字串,請以字元為單位,按n gram方法統計每個長度為 n 的子串出現的頻度,並輸出最...
NOI 1 13 26 n gram串頻統計 題解
26 n gram串頻統計 總時間限制 1000ms 記憶體限制 65536kb 描述 在文字分析中常用到n gram串頻統計方法,即,統計相鄰的n個單元 如單詞 漢字 或者字元 在整個文字 現的頻率。假設有乙個字串,請以字元為單位,按n gram方法統計每個長度為 n 的子串出現的頻度,並輸出最高...