# 打印数字矩阵到标准输出。
# 按顺时针方向,从外到内打印矩阵。起点是矩阵的左上角。
class Matrix
def initialize(width)
@n = 0
@width = width #矩阵的宽度
# 创建二维数组
@square = Array.new(@width) do
Array.new(@width, 0)
end
end
# 打印矩阵
def print_matrix
@square.each do |line|
line.each do |n|
printf("%-3d", n)
end
puts
end
end
# 填充矩阵。
# 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
end
fill_in_the_matrix(start+1)
end
end
m = Matrix.new(ARGV[0].to_i)
m.fill_in_the_matrix(0)
m.print_matrix
分享到:
相关推荐
输入一个矩阵,按照从外到里以顺时针的顺序依次打印出每一个数字。 例如:左图矩阵,按顺时针打印出的结果是:1、2、3、4、8、12、16、15、14、13、9、5、6、7、8、12、11、10 要求: 高效 分析时空效率
Java 顺时针打印矩阵是一种常见的算法问题,要求从外向里以顺时针的顺序依次打印出每一个数字。例如,输入一个矩阵: 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、...
在这个螺旋矩阵中,数字从1开始,按照顺时针方向螺旋形地填充。每行和每列的数字都是递增的,直到整个矩阵填满。 在C++中实现这个功能,我们需要用到二维数组来存储矩阵,同时还需要两个变量来跟踪当前行和列的边界...
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, 例如,如果输入如下矩阵: 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.
面试题之顺时针打印矩阵,Python实现,供大家参考,具体内容如下 问题描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,输入如下矩阵: 则依次打印出数字1,2,3,4,8,12,16,15,14,13,...
Java实现按照顺时针或逆时针方向输出数字矩阵的功能示例 Java是一种流行的编程语言,广泛应用于各种软件开发中。Java实现按照顺时针或逆时针方向输出数字矩阵的功能是Java编程中的一个重要应用场景。本文将主要介绍...
java编程题之顺时针打印矩阵的主要问题是,给定一个矩阵,如何按照从外向里以顺时针的顺序依次打印出每一个数字。 二、解题思路 要解决这个问题,需要使用一个循环来控制打印的方向和顺序。可以使用一个ArrayList...
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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. package main...
内螺旋矩阵算法是一种在二维数组中填充数字的特殊方式,其特点是数字按顺时针方向从数组中心向外螺旋式地填充。这种填充模式在数据结构和算法的学习中颇为有趣,因为它涉及到了数组的操作以及对角线元素的处理。在...
题目:顺时针打印矩阵(同LeetCode 螺旋矩阵打印) 题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,...
本文实例讲述了PHP实现顺时针打印矩阵的方法。分享给大家供大家参考,具体如下: 问题 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 ...
简介:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。题解 1 - typescript编辑时间:2020.6.5执行用时:96ms内存消耗:39
螺旋矩阵是一个矩阵,其中的元素按照顺时针或逆时针方向从矩阵的外层向内层,或者从内层向外层螺旋形填充。想象一下,你正站在一个由数字组成的迷宫入口,开始沿着边缘行走,一步步深入迷宫中心。在顺时针螺旋矩阵中...
在该矩阵中,数字从中心或某一固定位置开始向外以螺旋的形式逐渐增加。例如,一个3x3的螺旋矩阵可能如下所示: ``` 1 2 3 8 9 4 7 6 5 ``` 在这个例子中,数字从1开始,按照顺时针方向填充整个矩阵。 ### 二、螺旋...
假设我们有一个n×n的矩阵,我们将从左上角开始,按照顺时针方向填充数字。在第一圈中,我们会依次填充1到n²。当一圈填充完毕后,下一次填充会跳过已经填过的元素,继续在外层进行。这个过程会持续到所有元素都被...
一个n*n的螺旋矩阵,从左上角开始,按顺时针方向填入数字1到n²,直到整个矩阵填满。例如,对于3x3的矩阵,填充顺序是1, 2, 3, 4, 5, 6, 7, 8, 9。 实现螺旋矩阵的关键在于设计正确的嵌套循环。C++中的二维数组可以...
其核心思想是从矩阵的中心位置开始,按照特定的方向(通常是顺时针)逐层向外扩展,每次填充一个元素。具体步骤如下: - 初始化:设置一个空的正方形矩阵`a[15][15]`。 - 输入:用户输入矩阵的大小`M`(要求在3至15...
螺旋矩阵是一种特殊的二维数组,其中的数字按照顺时针方向螺旋式地递增。在Python中,我们可以借助迭代器这一强大的工具来实现螺旋矩阵的生成。迭代器允许我们逐个访问序列中的元素,而无需一次性加载整个序列,这...
螺旋矩阵是指一个n×n的矩阵,其中的数字按照从外向内、顺时针方向螺旋填充。例如,一个3×3的螺旋矩阵可能如下所示: ``` 1 2 3 8 9 4 7 6 5 ``` ### 算法实现逻辑 生成螺旋矩阵的关键在于确定填充元素的顺序。...