作者ric2k1 (Ric)
看板EE_DSnP
標題[情報] 作業 1.2 中的 string mp
時間Wed Oct 3 19:20:41 2012
作業 1.2 中有一個 string mp,它的作用在提供 constant time 的 look up,
讓你可以很快的把正常人心中字母的排序與瘋狂博士心中的排序很快的對應起來。
雖然也許大家隨便寫寫也可以讓它 work,
但我的目的是讓大家了解如何把 compile time 就可以知道的資訊,
利用 static array 做到 const time 的 look up,
所以以下的提示請大家務必搞懂!!
* "string mp" 是用來查 "正常人心目的字母排序" 與 "瘋狂博士的字母排序" 的對應。
* 以上的對應就是存在 "string mp" 身上
* mp 雖然是個 string object, 但你可以用 mp[i] 來取的 string 中第 i 個字元
* 以上的 i 是 int, 如果是 char ch, 想想看 ch - 'A' 的意義
* 所謂的 original string, 是指原來的書名、作者名稱、等等
* 所謂的 mapped string 是一個 UPPER case 的 string,
它反應了 original string 在瘋狂博士心中的順序。
比方說: dog 會 mapped 到 EBH
abc 會 mapped 到 FCD
因為 FCD 排在 EBH 的後面,所以 abc 在瘋狂博士的心中應該就要排在 dog 的後面
* class xStr 的 constructor 會 take 一個 string,
然後呼叫 "static char xMap(char c)" 把它換成 mapped string
也就是說,xMap(c) 裏頭應該要利用到 "string mp",
同時也要處理一些當 c 不是字母的情況。
先這樣,如有不清楚在提問!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.25.108
1F:推 simpdanny:這題還留著啊XDDDD 10/03 19:27
2F:推 holyheart:要是寫之前就看這篇可以少走很多冤枉路... 10/05 12:25
3F:推 peter0902:今年hint好詳細喔! 寫之前一定要先看懂... 10/05 15:37
4F:推 caspercat:我有一點點蠢問題...abc 在瘋狂博士的心中應該就要排在 10/07 17:47
5F:→ caspercat:dog 的後面的話,那為何a小題的output是abc not smaller 10/07 17:48
6F:→ caspercat:than dog?排序時不是要把dog排在前位嗎? 10/07 17:49
7F:→ caspercat:還是只是當作排序時由小到大的意思? 10/07 17:51
8F:→ ric2k1:恩,排序時從小排到大。 10/08 23:10
9F:推 nickchu35:隔年有用推 10/05 15:33