題目描述
輸入一個矩陣,按照從外向裡以順時針的順序依次列印出每一個數字,例如,如果輸入如下矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
由于每列印完一圈都會改變其起始坐标,是以需要先确定矩陣大小與這個起始坐标的關系,比如一個4階矩陣,第一圈的起始坐标是(0,0),第二圈的起始坐标是(1,1),列印兩圈之後就列印結束了。在比如一個5階矩陣,前兩圈是一樣的,第三圈的起始坐标是(2,2),而且隻列印了一個數。我們可以發現隻要起始坐标的兩倍小于階數就會一直轉圈列印,是以停止轉圈列印的條件就是起始坐标的兩倍大于或者等于階數。接下的問題是,每一圈的列印方法。因為有一個起始坐标,根據行數和列數就可以确定終點坐标。具體計算公式如下
endx=rows−start−1;endy=cols−start−1
那麼根據這個思路就可以寫出如下代碼(已被牛客ac):