網頁

顯示具有 String 標籤的文章。 顯示所有文章
顯示具有 String 標籤的文章。 顯示所有文章

2014年6月5日 星期四

POJ 1226 Substrings

想法:
    先將全部的字串依照length由小到大排序,把最短的那個字串拿來枚舉,由長到短枚舉該字串的所有substring,以sample input第二個case舉例,最短的字串為"rose",枚舉substring "rose", "ros", "ose", "ro", "os"...。
    每次枚舉到一個substring後,記得還有反轉sub_inverse,把substring和sub_inverse拿來和其他字串(除了最短的字串以外的字串)比較,這邊我是套KMP Algorithm,如果其他字串全部都找的到substring或sub_inverse的話,表示找到答案,輸出該substring的長度。

POJ 3461 Oulipo

題意:
    找出W字串在T字串中出現幾次。例如W="AZA",T="AZAZAZA",答案為3次。

想法:
    套KMP演算法

2014年3月10日 星期一

UVa 872 Ordering

想法:
    這題是backtracking內融合了topological sort,基本上就是第一格, 第二格, ....依序填入,每次填的時後判斷哪些node可以填(表示需要在該node前出現的node已經出現過了),詳細見底下code。

2014年2月27日 星期四

UVa 902 Password Search

題意:
  N為一個substring的長度,找出題目string裡面哪個substring重複最多次數。

想法:
  用map[substring] = 次數 來記錄每個substring出現的次數,然後再找出最大的次數並輸出該substring。



2014年2月17日 星期一

UVa 10222 Decode the Mad man

想法:
  先建立一個鍵盤keyboard,然後輸入一個字元c之後就找在keyboard裡的index,並輸出keyboard[i-2]。



2014年2月5日 星期三

UVa 10878 Decode the tape

本題連結
想法:
  觀察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都要有個空行。


UVa 537 Artificial Intelligence?

題意:
  找出關鍵字U=???V或P=???W或I=???A的其中兩個,並從等式P=I*U算出另一個值。

想法:
  函數分析時依序從整數,小數,以及指數的順序,在回傳兩個值後計算另一個即可。


UVa 10361 Automatic Poetry

題意:
  給定n對詩句,每對詩句的第一句為s1<s2>s3<s4>s5的形式(si表示那是個字串,可包含空格),我們所要做的就是把第一句<>去掉,然後第二句的"..."換成"s4s3s2s5"即可。

想法:
  讀取每個si的時候一定要以'<'或'>'作為分隔點,因為測資不一定是以空格隔開。


UVa 10010 Where's Waldorf?

想法:
  先把字都換成小寫,然後由左往右,由上往下,每個位置往八個方向找確認是否符合。


2014年2月3日 星期一

UVa 401 Palindromes

本題連結
想法:
  處理鏡像的部份我是把它存成陣列,Mir[]="AAE3HHIIJLLJ....",比對兩個字元是否為鏡像,則看Mir[i]和Mir[i+1]是否符合,另外要注意本題每個輸出之間還要空一行。


UVa 490 Rotating Sentences

題意:
  將每一行的句子轉成直的,順序由下到上。
想法:
  將每個句字保存後,依題意順序將句子每個字輸出,如果該列句子已經結束,則輸出空格。


2014年1月25日 星期六

UVa 642 Word Amalgamation

本題連結
想法:
  給不同的單字不同的Hash值,在比對Hash值來找。


2014/2/23 更新: C++(11)寫法

2014年1月21日 星期二

UVa 494 Kindergarten Counting Game

想法:
  檢查不是字母的下一個字元是不是字母,如果是數量就加一。對於這種input很多字串的情況,可以使用freopen("input.txt","rt",stdin)在debug時較為方便,但提交時記得刪除。



UVa 10340 All in All

如果陣列開很大的情況下,要放在global,不然會造成stack overflow,就會看到RuntimeError的出現。


2014年1月10日 星期五

UVa 10282 & POJ 2503 Babelfish

想法:
  本題可直接使用STL的map來做string與string的對應,用printf而不用cout可提升效率,因此使用c_str()將c++字串轉為c字串(POJ實測是985ms與766ms)。



2014年1月2日 星期四

POJ 1035 Spell Checker

想法:

  • dic[i],check字數相等的情況
  • dic[i],check字數相差1的情況



2013年12月29日 星期日

UVa 10815 Andy's First Dictionary

想法:
  用%s讀入temp(可略過空白和換行)=>判斷temp裡每個字放到dic[].word裡=>排序=>輸出

注意:
  • 如A's 要分成A跟s
  • 不用考慮最後一行換行的問題
  • 陣列開很大時要放在global,避免Runtime Error(放在local會有大小限制,array開很大就會overflow)



UVa 10420 List of Conquests

前言寫很多,其實就只是找每個國家的重複個數而已
想法:
  只存國家名稱=>按名稱排序=>找重複數量


UVa 156 Ananagrams

  本題是輸入一堆單字,come, EoMc, emoc, ECMO這四個單字是一樣的,輸出的單字找不到其他字與其相同。輸出按ABC..abc..順序。

想法:
  將字母皆視為小寫,而替每個字母產生一個亂數,單字將字母的值加起來存成一個value,如果兩個單字的value一樣則為相同。