想法:
先將全部的字串依照length由小到大排序,把最短的那個字串拿來枚舉,由長到短枚舉該字串的所有substring,以sample input第二個case舉例,最短的字串為"rose",枚舉substring "rose", "ros", "ose", "ro", "os"...。
每次枚舉到一個substring後,記得還有反轉sub_inverse,把substring和sub_inverse拿來和其他字串(除了最短的字串以外的字串)比較,這邊我是套KMP Algorithm,如果其他字串全部都找的到substring或sub_inverse的話,表示找到答案,輸出該substring的長度。
2014年6月5日 星期四
2014年3月10日 星期一
UVa 872 Ordering
想法:
這題是backtracking內融合了topological sort,基本上就是第一格, 第二格, ....依序填入,每次填的時後判斷哪些node可以填(表示需要在該node前出現的node已經出現過了),詳細見底下code。
這題是backtracking內融合了topological sort,基本上就是第一格, 第二格, ....依序填入,每次填的時後判斷哪些node可以填(表示需要在該node前出現的node已經出現過了),詳細見底下code。
2014年2月27日 星期四
UVa 902 Password Search
題意:
N為一個substring的長度,找出題目string裡面哪個substring重複最多次數。
想法:
用map[substring] = 次數 來記錄每個substring出現的次數,然後再找出最大的次數並輸出該substring。
N為一個substring的長度,找出題目string裡面哪個substring重複最多次數。
想法:
用map[substring] = 次數 來記錄每個substring出現的次數,然後再找出最大的次數並輸出該substring。
2014年2月17日 星期一
2014年2月5日 星期三
UVa 10878 Decode the tape
本題連結
想法:
觀察a,b,c,d..字母後發現:
想法:
觀察a,b,c,d..字母後發現:
- a=|oo__.__o|
- b=|oo__._o_|
- c=|oo__._oo|
- d=|oo__.o__|
- e=|oo__.o_o|
可以知道它是以二進位的方式表示,在把'a'的値(2^0+2^5+2^6=97)加起來後與ASCII表比較,剛好就是表上'a'的値,因此這題把每個字元的値加起來輸出即可(換行符號它也已經在input裡囉,不用自己換行)。
2014年2月4日 星期二
UVa 409 Excuses, Excuses!
題意:
給定K個關鍵字,和E個句字,分析每個句字含有多少個關鍵字,將關鍵字最多的句字輸出,如果有多個數量相同的句字,則全部都要輸出。
想法:
將句子不是英文字母的字去掉,一個單字一個單字比對。本題輸出的時候包含最後一個Case都要有個空行。
給定K個關鍵字,和E個句字,分析每個句字含有多少個關鍵字,將關鍵字最多的句字輸出,如果有多個數量相同的句字,則全部都要輸出。
想法:
將句子不是英文字母的字去掉,一個單字一個單字比對。本題輸出的時候包含最後一個Case都要有個空行。
UVa 537 Artificial Intelligence?
題意:
找出關鍵字U=???V或P=???W或I=???A的其中兩個,並從等式P=I*U算出另一個值。
想法:
函數分析時依序從整數,小數,以及指數的順序,在回傳兩個值後計算另一個即可。
找出關鍵字U=???V或P=???W或I=???A的其中兩個,並從等式P=I*U算出另一個值。
想法:
函數分析時依序從整數,小數,以及指數的順序,在回傳兩個值後計算另一個即可。
UVa 10361 Automatic Poetry
題意:
給定n對詩句,每對詩句的第一句為s1<s2>s3<s4>s5的形式(si表示那是個字串,可包含空格),我們所要做的就是把第一句<>去掉,然後第二句的"..."換成"s4s3s2s5"即可。
想法:
讀取每個si的時候一定要以'<'或'>'作為分隔點,因為測資不一定是以空格隔開。
給定n對詩句,每對詩句的第一句為s1<s2>s3<s4>s5的形式(si表示那是個字串,可包含空格),我們所要做的就是把第一句<>去掉,然後第二句的"..."換成"s4s3s2s5"即可。
想法:
讀取每個si的時候一定要以'<'或'>'作為分隔點,因為測資不一定是以空格隔開。
2014年2月3日 星期一
UVa 401 Palindromes
本題連結
想法:
處理鏡像的部份我是把它存成陣列,Mir[]="AAE3HHIIJLLJ....",比對兩個字元是否為鏡像,則看Mir[i]和Mir[i+1]是否符合,另外要注意本題每個輸出之間還要空一行。
想法:
處理鏡像的部份我是把它存成陣列,Mir[]="AAE3HHIIJLLJ....",比對兩個字元是否為鏡像,則看Mir[i]和Mir[i+1]是否符合,另外要注意本題每個輸出之間還要空一行。
2014年1月25日 星期六
2014年1月21日 星期二
UVa 494 Kindergarten Counting Game
想法:
檢查不是字母的下一個字元是不是字母,如果是數量就加一。對於這種input很多字串的情況,可以使用freopen("input.txt","rt",stdin)在debug時較為方便,但提交時記得刪除。
檢查不是字母的下一個字元是不是字母,如果是數量就加一。對於這種input很多字串的情況,可以使用freopen("input.txt","rt",stdin)在debug時較為方便,但提交時記得刪除。
2014年1月10日 星期五
UVa 10282 & POJ 2503 Babelfish
想法:
本題可直接使用STL的map來做string與string的對應,用printf而不用cout可提升效率,因此使用c_str()將c++字串轉為c字串(POJ實測是985ms與766ms)。
本題可直接使用STL的map來做string與string的對應,用printf而不用cout可提升效率,因此使用c_str()將c++字串轉為c字串(POJ實測是985ms與766ms)。
2014年1月2日 星期四
2013年12月29日 星期日
UVa 10815 Andy's First Dictionary
想法:
用%s讀入temp(可略過空白和換行)=>判斷temp裡每個字放到dic[].word裡=>排序=>輸出
注意:
用%s讀入temp(可略過空白和換行)=>判斷temp裡每個字放到dic[].word裡=>排序=>輸出
注意:
- 如A's 要分成A跟s
- 不用考慮最後一行換行的問題
- 陣列開很大時要放在global,避免Runtime Error(放在local會有大小限制,array開很大就會overflow)
UVa 156 Ananagrams
本題是輸入一堆單字,come, EoMc, emoc, ECMO這四個單字是一樣的,輸出的單字找不到其他字與其相同。輸出按ABC..abc..順序。
想法:
將字母皆視為小寫,而替每個字母產生一個亂數,單字將字母的值加起來存成一個value,如果兩個單字的value一樣則為相同。
訂閱:
文章 (Atom)