# 列印數字矩陣到標準輸出。
# 按順時針方向,從外到內列印矩陣。起點是矩陣的左上角。
class matrix
def initialize(width)
@n = 0
@width = width #矩陣的寬度
# 建立二維陣列
@square = array.new(@width) do
array.new(@width, 0)
endend
# 列印矩陣
def print_matrix
@square.each do |line|
line.each do |n|
printf("%-3d", n)
endputs
endend
# 填充矩陣。
# start 遍歷的起點
def fill_in_the_matrix(start)
# 結束遞迴的條件
return if start > (@width-1)/2
#從左到右遍歷
start.upto(@width-start-1) do |i|
@square[start][i] = @n += 1
end
#從上到下遍歷
(start+1).upto(@width-start-1) do |i|
@square[i][@width-start-1] = @n += 1
end#從右到左遍歷
(@width-start-2).downto(start) do |i|
@square[@width-start-1][i] = @n += 1
end#從下到上遍歷
(@width-start-2).downto(start+1) do |i|
@square[i][start] = @n += 1
endfill_in_the_matrix(start+1)
endend
m = matrix.new(argv[0].to_i)
m.fill_in_the_matrix(0)
m.print_matrix
解題 從外到內順時針列印給定矩陣(C 實現)
輸入乙個矩陣,按照從外到內以順時針依次列印每乙個數字。例如輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 則依次列印 1 2 3 4 5 10 5 10 9 8 7 6 1 6 7 8 9 4 3 2 演算法描述 利用迴圈實現,每次迴圈列印矩陣中的乙...
順時針列印陣列
面試題20 順時針列印矩陣 題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如如果輸入如下矩陣 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,1,10 我的 如下 ...
順時針列印矩陣
輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 45 6 7 89 10 11 1213 14 15 16則依次列印出數字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。這個題目 寫的並不好感覺,好多if看著就煩,就是...