洛谷P2264 情書

2021-10-02 13:18:31 字數 1515 閱讀 9947

給出n代表特殊詞彙的數量(

1<=n

<

=100

)(1<=n<=100)

(1<=n

<=1

00),然後給出n個單詞。最後一行給出乙個句子,包含空格,逗號,句號,句號分隔表示是不同的句子。

句子**現特殊詞彙(詞彙意義同英語,如your不算出現了you)能加分,但同乙個句子一種詞最多加一分。

單詞和句子不區分大小寫。

類似匹配問題,但這題的難點不在於匹配而在於處理句子以及挖出句子中的每乙個詞。

如這個點

1

sbyuno is s b. yuno is sb. yuno is sb sb. yuno is sb,sb. yuno is sb.sb.

分隔的s b不符合匹配原則,第三句話**現了兩次特殊詞,但只記錄一次,最後一句話作為單獨的句子只含特殊詞。

其實用標點符號分隔,挖掘出子串就ok了

讀入有坑,n個詞語之後可能包含什麼奇特的標點符號,如果直接對最後一行getline會讀空(然後爆0),兩次getline才能讀到最後那行。

匹配相同單詞可以使用逐字匹配,或者string的==,或者雜湊。這裡為了練習unordered_map用了它的雜湊。

unordered_map類似map,能保證相同的特殊詞讀入後仍然只計一次,同時又能給每個詞提供乙個不同的標號,用類似陣列的辦法取出

#include

"cstdlib"

#include

#include

#include

#include

#include

#include

using

namespace std;

unordered_mapint>um;

int arr[

105]

;int

main()

um.insert

(make_pair

(str,i));

//加入特殊詞,用um[str]可取出這個str對應的數值(存在的情況下,

//不存在會丟擲異常)

} str.

clear()

;getline

(cin, str)

;getline

(cin, str)

;int size = str.

size()

;for

(int i =

0; i < size; i++

)for

(int i =

0,j=

0; i < size; i++)if

(str[i]

=='.'

)memset

(arr,0,

105*

sizeof

(int))

; j = i;}}

cout << ans;

return0;

}

洛谷P2264 情書

題目大意 給你n個可用單詞,和一段文字,每句用句號隔開。問這段文字的感動值為多少 每句話有多少個可用單詞,感動值就是多少,一句話中乙個可用單詞出現多次只算乙個。最終答案為每句的感動值總和 解題思路 我們先用trie存可用單詞,然後對於那段文字,我們逐字元讀入。用乙個set儲存當前句出現過的可用單詞,...

題解 洛谷P2264 情書(字串 模擬)

顯然這道題我們用字串儲存感動詞彙,然後讀入正文時讀一整行,比較部分字串會更方便 這裡學到了幾招。1.要考慮把大寫都轉成小寫,不會stl庫就將所有大寫字母加上 a a 就變成小寫形式了。2.初始化乙個空白字串 sent 然後在讀入正文時倘若讀到的不是空格 逗號 句號,就令sent zw i 可以直接將...

洛谷2264情書

一封好的情書需要撰寫人全身心的投入。cyy同學看上了可愛的c 想對她表白,但卻不知道自己寫的情書是否能感動她,現在他帶著情書請你來幫助他。為了幫助lin toto,我們定義乙個量化情書好壞的標準感動值。判斷感動值的方法如下 1.在情書的一句話中若含有給定詞彙列表中的特定單詞,則感動值加1,但每一單詞...