#16542: 索引轉換 by C


freedom501999@gmail.com (帥氣魔方生)

學校 : 不指定學校
編號 : 88611
來源 : [39.8.203.54]
最後登入時間 :
2019-05-30 22:56:25
c292. APCS2017-0304-3數字龍捲風 -- 2017年3月APCS | From: [110.28.110.140] | 發表日期 : 2019-01-12 21:26

這個龍捲風的規律如下 :

中心 -> 走 1 步 -> 右轉 -> 走 1 步 -> 右轉

       -> 走 2 步 -> 右轉 -> 走 2 步 -> 右轉

       -> 走 3 步 -> 右轉 -> 走 3 步 -> 右轉

       -> .........

       -> 走 n-1 步 -> 右轉 -> 走 n-1 步 -> 右轉 -> 走 n-1 步

例如 n = 5 時,走的步伐是 1 1 2 2 3 3 4 4 4 ,不論從哪個方向開始都適用

如果用二個索引 i j 跑會很麻煩,所以要進行轉換

用二維陣列紀錄,先印出第一個數字 ( 中間的 ),然後跑迴圈

用一維的索引 index 來跑,往左一步是 index - 1 ,往上是 index - n ,往右是 index + 1 ,往下是 index + n

用陣列來記錄方向  direct [ 4 ] = { -1 , -n , 1 , n }, index + direct [ i ] 就是下一個數字

每走 a 步,就右轉,走兩次 a 步,右轉後 a 就加一,如上述規律

每次要印數字,只要  index / n 就是橫列,  index % n 就是直行,記得每一步都要印

依上述規律,就能解決這題

 

 
ZeroJudge Forum