反片語 uva 156(map的使用

2022-08-19 14:30:19 字數 2322 閱讀 8099

反片語 

輸入一些單詞(以「#」為結束標誌),找出所有滿足如下條件的單詞:該單詞不能通過字母的重排,得到輸入文字中的另乙個單詞。在判斷是否滿足條件是不分大小寫,但是在輸出時應保留輸入時的大小寫,按字典序進行排列(所有大寫字母在所有小寫字母前面)。 

ladder came tape soon leader acme ride lone dreis peat

scale orb eye rides dealer note derail laces dried

noel dire disk mace rob dries #

disk

note

derail

dried

eyeladder

soon

map 對映,可以看作是乙個加強版的高階陣列

map的基本操作函式:

c++ maps是一種關聯式容器,包含「關鍵字/值」對

begin()          返回指向map頭部的迭代器

clear()         刪除所有元素

count()          返回指定元素出現的次數

empty()          如果map為空則返回true

end()            返回指向map末尾的迭代器

equal_range()    返回特殊條目的迭代器對

erase()          刪除乙個元素

find()           查詢乙個元素

get_allocator()  返回map的配置器

insert()         插入元素

key_comp()       返回比較元素key的函式

lower_bound()    返回鍵值》=給定元素的第乙個位置

max_size()       返回可以容納的最大元素個數

rbegin()         返回乙個指向map尾部的逆向迭代器

rend()           返回乙個指向map頭部的逆向迭代器

size()           返回map中元素的個數

swap()            交換兩個map

upper_bound()     返回鍵值》給定元素的第乙個位置

value_comp()      返回比較元素value的函式

題解:

#include#include

#include

#include

#include

#include

using

namespace

std;

mapcnt;

vector

words;

string repr(const &string s)

intmain()

//輸出結果

vectorans;

for(int i=0;i)

if(cnt[repr(words[i])]==1

)ans.push_back(words[i]);

sort(ans.begin(),ans.end());

for(int i=0;i)

cout

<"\n"

;

return0;

}

那個const string & s 的用法我也不太懂,意義何在?

baidu知道上:

1、考慮如下函式定義:

int fun2(int& pi)

因為沒有修改pi,所以引數就懶得加const限制,但在其他地方呼叫次函式時會有限制:非const的引用引數必須用與其型別一致的物件/量來初始化,

也就是說可以這樣用:int a=5;b=fun2(a);

這樣:int b=fun2(5);是錯的。

因為數字5是乙個字面值,也就是個右值,而函式要求的是乙個具體的int型別的物件/變數,需要左值。

然後這樣:long a=5;int b=fun2(a);也不行,型別不一樣。

但引數加上const後上兩種都是合法的,const引用的引數允許可行的轉換,比如fun2(3.14),引數是個浮點,但編譯器會轉換成int然後呼叫,要是壓根轉換不過去那肯定加了const也不行的。

2、另外,即使說,我所有**為了易讀,絕對不會出現字面值這東西,還有個問題。如果你寫了個函式為了保護引數加了const,但函式裡面呼叫了另乙個引數沒const的函式,那麼這裡估計就要出錯,const實參不能傳遞給非const形參。雖然你能保證自己的**不衝突,但不能保證別人的**,尤其是合作的時候每人寫乙個部分。

3、綜上,不需要改動的引數,如果要通過引用傳遞,全都加上const最安全。

例題5 4 反片語 UVa156

演算法 競賽入門經典 第2版 第5章c 與stl入門 例 題5 4反片語 uva156 感悟。2 結合書中中文,英文原題能很快讀懂。3 在搭建輸入輸出框架中,對string進一步熟悉,該英文原題pdf檔案中無法複製輸入資料,網上找了一通,保留如下 ladder came tape soon lead...

Map的應用(反片語,UVA156)

5.map的應用 使用count 返回的是被查詢元素的個數。如果有,返回1 否則,返回0。注意,map中不存在相同元素,所以返回值只能是1或0。使用find,返回的是被查詢元素的位置,沒有則返回map.end 解題思路 每輸入乙個單詞先存入vector,歸一化並排序後對應map的值 全部處理完後再從...

STL map 關於反片語演算法的理解

題目 輸入一些單詞,找出所有滿足如下條件的單詞 該單詞不能通過字母重排,得到輸入文字中的另外乙個單詞。在判斷是否滿足條件時,字母不分大小寫,但在輸出時應保留輸入中的大小寫,按字典序進行排列 所有的大寫字母在所有的小寫字母的前面 輸入樣例 ladder came tape soon leader ac...