題目描述
兩張衛星圖 A 與 B 都是 N × N 的像素方格。衛星的顯示器可以對整張 A 做一次循環捲動,再逐格與 B 比對。捲出邊界的內容會從另一側出現,像素不會消失。
你可以選 R k:讓 A 的所有行一起向下循環移動 k 格;或者選 C k:讓 A 的所有列一起向右循環移動 k 格。k 可以是 0 到 N-1;R 0 和 C 0 都表示不改變畫面,但計算時仍視為兩種候選操作。只能擇一種操作,不能先移行再移列。
每種操作的得分,是操作完成後 A 與 B 在相同位置、像素值也相同的格數。請找出得分最高的操作;若有並列,優先選 R,同類操作再選較小的 k。答案即使為 0,也仍需輸出選中的操作。
規則圖解
以一張 2 × 2 的圖作例子,捲動整張圖(不是只挑其中一行或一列移動):
原圖 A R 1:每一行往下捲 1 格 C 1:每一列往右捲 1 格
1 2 3 4 2 1
3 4 1 2 4 3
| 操作 | 原本位於 (r, c) 的像素,移動後的位置 | 超出邊界時 |
|---|---|---|
| R k | ((r+k) mod N, c) | 最下面的行回到最上面 |
| C k | (r, (c+k) mod N) | 最右邊的列回到最左邊 |
範例一的 A,對每一行做 C 1:
A 捲動後的 A = B
1 2 3 3 1 2
4 5 6 C 1 → 6 4 5
7 8 9 9 7 8
九個格子全部相同,得分 9。候選操作總共 2N 個;即使 N=1,R 0 與 C 0 都要考慮,並列時選 R 0。
輸入格式
第一行為整數 N,表示兩張圖都是 N 行、N 列。
接下來 N 行是圖 A,再接 N 行是圖 B;每行由左到右提供 N 個以空白分隔的整數像素。兩張圖都按從上到下的順序輸入。
限制
1 ≤ N ≤ 120;0 ≤ 像素值 ≤ 255。
輸出格式
輸出一行:最多相同像素數 方式 k。方式為大寫 R(全圖向下捲)或 C(全圖向右捲);k 是 0 到 N-1 的整數。只要該位置的兩個像素值相等就計 1 分,不需輸出百分比。
範例1
範例輸入:
3
1 2 3
4 5 6
7 8 9
3 1 2
6 4 5
9 7 8
範例輸出:
9 C 1
每一行的像素同時向右循環移動一格,就能與 B 完全相同。
範例2
範例輸入:
1
7
0
範例輸出:
0 R 0
兩種方式都不能產生相同像素;並列時優先選 R。
範例測資
範例輸入 1
3 1 2 3 4 5 6 7 8 9 3 1 2 6 4 5 9 7 8
範例輸出 1
9 C 1
範例輸入 2
1 7 0
範例輸出 2
0 R 0
請先登入後再提交程式碼
討論與題解
載入討論區…