蜜蜂觀察 (APCS 2024-01 中級)
1.0s 256M蜜蜂 Bob 位在一個大小為 \(m \times n\) 的蜂巢中。蜂巢的每一格都寫著一個大寫或小寫英文字母。
Bob 一開始位於蜂巢的左下角。以輸入中的列由上到下、欄由左到右來看,六種移動方向如下:
| 方向編號 | 移動方式 |
|---|---|
| \(0\) | 右上(上一列、同一欄) |
| \(1\) | 右(同一列、下一欄) |
| \(2\) | 右下(下一列、下一欄) |
| \(3\) | 左下(下一列、同一欄) |
| \(4\) | 左(同一列、上一欄) |
| \(5\) | 左上(上一列、上一欄) |
依序執行每一步移動。如果該步會使 Bob 離開蜂巢,Bob 會留在原地,但這一步仍算執行完成。
請輸出 Bob 每一步執行後所在格子的字母所組成的字串,以及這些字母中共有多少種不同字元。大寫與小寫字母視為不同字元。
輸入格式
第一行包含三個整數 \(m\)、\(n\)、\(k\),分別表示蜂巢的列數、欄數,以及移動步數。
接下來 \(m\) 行,每行包含一個長度為 \(n\) 的字串,表示蜂巢由上到下的各列。
最後一行包含 \(k\) 個整數 \(d_1,d_2,\ldots,d_k\),表示 Bob 依序移動的方向。
限制
- \(1 \le m,n \le 20\)
- \(1 \le k \le 100\)
- 蜂巢中的每個字元都是大寫或小寫英文字母。
- \(0 \le d_i \le 5\)
輸出格式
輸出兩行:
- 第一行輸出一個長度為 \(k\) 的字串,依序記錄 Bob 每一步執行後所在格子的字母。
- 第二行輸出一個整數,表示第一行字串中不同字元的種類數。
評分說明
本題共有兩個子題:
| 子題 | 分數 | 額外限制 |
|---|---|---|
| 1 | 60 | \(m=2\) |
| 2 | 40 | 無額外限制 |
範例輸入 1
2 4 5
TyuI
ABaB
0 1 2 3 0
範例輸出 1
Tyaau
4
範例解釋 1
圖中的 S 是起點,數字表示完成該步後 Bob 所在的位置;× 表示該步撞牆並留在原地。
範例輸入 2
4 6 11
rMmnis
LRveEX
ZexDoc
HAdbHA
0 1 5 1 1 0 3 0 0 1 0
範例輸出 2
ZeLRvmvmmnn
7
範例解釋 2
Bob 在第 \(9\) 步與第 \(11\) 步撞到上方牆壁,所以分別留在字母 m 與 n。
題目來源
2024 年 1 月 APCS 程式實作第 2 題:ZeroJudge m932「蜜蜂觀察」。
登入後即可撰寫程式並提交評測。
登入