a080. 捲動後的衛星圖

中等陣列模擬

時間限制 2000 ms ・ 記憶體限制 256 MB

題目描述

兩張衛星圖 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
請先登入後再提交程式碼

討論與題解

載入討論區…

更多