前往
大廳
主題

ZeroJudge - a869: 9. Letter Scramble 解題心得

Not In My Back Yard | 2021-04-29 00:00:07 | 巴幣 0 | 人氣 165

題目連結:


題目大意:
給定每個大寫英文字母對應的分數值,如下圖:

輸入第一列給定一正整數 N(N ≦ 9),代表遊戲的正方形網格之大小為 N × N 格。接著有 N 列輸入,每列給定 N 個網格。每個網格的內容只會是「[]」、「2L」、「2W」、「3L」以及「3W」,依序代表是沒有加成效果、將單一字母分數變為兩倍、將整個字詞分數變為兩倍、將單一字母分數變為三倍和將整個字詞分數變為三倍之格子。

接著的一列給定一正整數 M,代表有 M 個字詞。接著有 M 列輸入,每列給定一字串(字元全是大寫英文字)、兩個整數以及一個字元(只會是 'V'(垂直)或是 'H'(水平)),代表有一個字詞其開頭字母位於起始列、起始行之位置,並按照 'V' 或 'H' 之方向擺放剩下的字母。

當字母放在某個格子中可以獲得對應的分數(有特殊加成的話,分數值會乘上該加成值)。若有一字詞沿途碰到多個加成之格子,則先計算每個字母各自的分數加成,最後再統一計算整個字詞的加成。

對於每個字詞,輸出該字詞以及其獲得之分數。



範例輸入:
8
[] [] [] [] [] [] [] []
[] 3W [] 2L [] [] [] []
[] [] [] [] 3L [] 2W []
[] [] [] [] [] 2L [] []
[] [] 2W [] [] [] [] []
[] [] [] 3L [] 3W [] []
[] 2L [] [] [] [] [] []
[] [] [] [] [] [] [] []
3
CRAFT 2 2 H
ZOO 6 4 V
QUARK 4 6 V


範例輸出:
CRAFT 33
ZOO 32
QUARK 84


解題思維:
模擬即可。

先將所有字母對應的分數值建成一個表格(陣列或其他資料結構)以供查詢。

接著對於每個字詞判斷其放置方向(直向或橫向),然後從起點位置開始一個字母一個字母地放在對應的網格位置。每放一個字母就檢查該格子是否有特殊加成。

如果加成是單一字母型的就將該格放的字母之分數乘以該格加成值;如果是整個單詞的加成,則將變數 W(一開始為 1,用來儲存全部的字詞加成)乘以該格加成值。

將每個字母各自的加成後分數值加總後,最後乘以 W 即是該字詞的整體分數值。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作