反片語
輸入一些單詞(以「#」為結束標誌),找出所有滿足如下條件的單詞:該單詞不能通過字母的重排,得到輸入文字中的另乙個單詞。在判斷是否滿足條件是不分大小寫,但是在輸出時應保留輸入時的大小寫,按字典序進行排列(所有大寫字母在所有小寫字母前面)。
ladder came tape soon leader acme ride lone dreis peatscale orb eye rides dealer note derail laces dried
noel dire disk mace rob dries #
disknote
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...