lua输出回旋矩阵

本文介绍了一种使用Lua语言实现的算法,该算法能够按螺旋顺序填充一个指定宽度和高度的二维数组。通过定义矩阵的宽高,起始角标和增量,算法能够逐个填充数组元素,直到整个矩阵被填满。此过程涉及判断当前位置是否越界或已被填充,从而改变填充方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

local w,h = 7,9 --定义矩阵的宽高
local x,y = 1,1	--起始角标
local d_x ,d_y = 0,1 --下一个角标的 增量
local cnt = 1 --起始值
local arr = {} --矩阵
--给矩阵赋值  初始值全部为0
for i=1,w do
 	for j=1,h do
  		if arr[i] == nil then
   		arr[i] = {}
  		end
  		arr[i][j] = 0
 	end
end
--开始回旋赋值
while(cnt <= w*h) do
  arr[x][y] = cnt
  cnt = cnt + 1
  x = x + d_x
  y = y + d_y
  if d_y == 1 and (y>=h or arr[x][y+1] ~= 0) then--向下
	   d_x = 1
	   d_y = 0
  elseif d_x == 1 and (x>=w or arr[x+1][y] ~= 0) then--向左
       d_x= 0;
       d_y = -1;
  elseif d_y == -1 and (y<=0 or arr[x][y-1] ~= 0) then--向上
       d_x = -1;
       d_y = 0;
  elseif d_x == -1 and (x<=0 or arr[x-1][y] ~= 0) then--向右
	   d_x= 0;
	   d_y = 1;
  end
end
--输出回旋矩阵
for i=1,w do
  	local str = ""
  	for j=1,h do
   		str = str .."、"..arr[i][j]
  	end
  	print(str)
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值