首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

信奧賽 C++ 矩陣變換判斷題:五種規則匹配邏輯完整解析

     編輯:程式設計綜合問答

題目回顧

N×N 矩陣(N 為奇數,1≤N≤10),原始矩陣 → 目標矩陣,僅進行一次變換,判斷屬於哪一種:

  1. 順時針旋轉 90°
  2. 逆時針旋轉 90°
  3. 中心點對稱交換(中心不動,其餘點與中心對稱點交換)
  4. 不變換
  5. 以上皆非

解題核心:座標映射規律

設矩陣下標 0-based,中心 c = (N-1)/2。對任意點 (r, c):

變換新座標
順時針 90°(c, N-1-r)
逆時針 90°(N-1-c, r)
中心對稱(2*mid-r, 2*mid-c)(中心點映射到自身)
不變(r, c)

演算法流程

    1. 讀入 N、原始矩陣 src、目標矩陣 dst。
    2. 若 src[mid][mid] != dst[mid][mid] → 直接輸出 5(中心點不同,不可能是 1-4)。
    3. 依序驗證四種映射規則:遍歷所有 (i,j),檢查 src[i][j] == dst[new_i][new_j]。
    4. 首個全匹配的規則編號即為答案;四者皆不匹配 → 輸出 5。

複雜度

N ≤ 10,O(N²) 遍歷四次極快,無需優化。

樣例驗證

輸入 5×5 字母矩陣,目標為上下左右翻轉(中心對稱),程式輸出 3,與樣例一致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved