PHP:矩阵的螺旋输出。。。是螺旋吗?我更倾向叫漩涡。

1 篇文章 0 订阅
1 篇文章 0 订阅

今天群里发了一道他去面试遇到的算法题,PHP的,矩阵的螺旋输出

题目:

例:

1 2 3

4 5 6

7 8 9


上面的这种矩阵,输出为  1 2 3 6 9 8 7 4 5

配个图看的更明白些

<?


function luoxuan($m,$start=1,$n=0){	//$one 初始值;$n 当前第几圈
	
	
	$test=$m%2;
	if($test){					//有余数 
		$q=($m-1)/2;			//总圈数
		$last=($m*$m+1)/2;
	}else{
		$q=$m/2;				//总圈数
		$last=0;	
	}
	
	if($n>=$q){					//如果当前圈数大于总圈数 则完成。
		if($last)echo $last;
		return false;
	}
	$test=$start;	
	for($i=$start;$i<$test+$m-1-$n*2;$i++){
		echo $i;
	}
	echo '<br>';
	$test=$i;
	for($i;$i<=$m*($m-1-$n);$i=$i+$m){
		echo $i;
		
	}
	
	echo '<br>';
	$test=$i;
	for($i;$i>$test-$m+1+$n*2;$i--){
		echo $i;
	}
	echo '<br>';
	$test=$i;
	for($i;$i>$test-$m*($m-1-$n*2);$i=$i-$m){
		echo $i;
	}
	echo '<br>';
	$i=$i+$m+1;
	luoxuan($m,$i,$n=$n+1);
	
}

luoxuan($m);

思路:

 例子: 

1 2 3

4 5 6

7 8 9

3x3的矩阵   先走 1-->2  再 3->6 再 9->8 再 7->4  至此,第一圈走完    每圈走四步(上右下左) 每步走m-1个数 代码里的四个for循环分别代表这上右下左四步 - &n*2为 第二圈,第三圈。。需要走的步数,因为随着圈数的增加,里面的小圈越来越小,数字越来越少,就像我们玩贪食蛇把自己围起来钻自己里面一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值