#37579: 解題思路(含一些小技巧)


edoctopus322@gmail.com (Moon Jam)

學校 : 臺北市立成功高級中學
編號 : 167591
來源 : [36.225.19.60]
最後登入時間 :
2023-12-23 13:47:18
b965. 2. 矩陣轉換 -- 2016年3月apcs | From: [36.225.13.17] | 發表日期 : 2023-09-17 21:26

 
解題思路:
這題題目測資範圍R,C,M都小於10,如果直接做的話複雜度應該就是O(RCM)(就是按照題目的意思把輸入的矩陣反著操作),限制2s應該是可以順利通關

🌟因為是要從B推回原先的矩陣,因此需要將輸入指令倒著走一次(例如原本是A矩陣翻轉、翻轉、順時針旋轉90度得到B矩陣,就要將B矩陣逆時針旋轉90度、翻轉、翻轉,才能變成原先的A矩陣),因此現在問題就只剩下如何完成翻轉和逆時針旋轉90度了

1. 翻轉:這邊是指上下翻轉,因此較為簡單,只要將第i列第j行的元素跟第(c-i)列第j行的元素交換即可,且其中i跟(c-i)會在一半的地方交會,且在c是奇數時(c+1)/2的那行可以不做任何操作,因此讓i從0~c/2執行過一次即可
2. 逆時針旋轉90度:這個稍微難一點,可以想做事將左上角固定,逆時針旋轉90度,如此一來可以發現就是將(i,j)位置的元素移動到(r-j-1,i)
逆時針旋轉90度示意圖
✏️多筆測資就只要把一開始的輸入包在while裡就好了
 
 
ZeroJudge Forum