本文主要是介绍一层循环实现回旋数列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
所谓回旋数,就是下面这样3的回旋数
1 2 3
8 9 4
7 6 5
5的回旋数
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
输入n得到相应的回旋数
学完了 判断 循环 和函数
恰好看到这道题
思考了一下 算是用一层循环做了出来
这应该比多层循环要效率吧
调用方法 showHx(10); 10为任意的数字
- <?php
- /*==============================================================
- # Program: Lamp learning
- # FileName: huixuan.php
- # Desc:
- # Author: pakey
- # Email: pakey@qq.com
- # HomePage: http://www.pakey.net
- # Version: 0.0.1
- # LastChange: 2012-04-29 11:21:52
- # History:
- ===============================================================*/
- //输出指定行的回旋数
- showHx(10);
- /**
- * [getHxArr 输出回旋数方针]
- * @param [integer] $num [回旋数行数]
- * @return
- */
- function showHx($num){
- // 防止不同浏览器空格不兼容
- echo '<style>*{font-family:"宋体"}</style>';
- //
- echo '<pre>';
- $arr=getHxArr($num);
- $lenth=strlen($num*$num);
- for ($i=1; $i <=$num; $i++) {
- for ($j=1; $j <= $num; $j++) {
- echo str_pad($arr[$i][$j], $lenth,' ',STR_PAD_LEFT),' ';
- }
- echo '<br /><br />';
- }
- }
- /**
- * [getHxArr 产生回旋数数组]
- * 回旋方向都是 左→右 上↓下 右←左 下↑上
- * 主要在控制在每个方向走多少个数
- * 以4为例 每次回旋处理数据数为 $hxnum_s=floor($hxnum)
- * 4 3 3 2 2 1
- * 每次4-0.5 然后向下取整 $hxnum
- * 4 3.5 3 2.5 2 1.5
- *
- * @param [integer] $num [回旋数行数]
- * @return [array] $hxArr [回旋数数组]
- */
- function getHxArr($num){
- // 产生数组
- $hxArr=array();
- // 回旋方法 1 从做到右 2 从上到下 3 从右到左 4 从下到上
- $hxmethod=1;
- // x坐标
- $x=1;
- // y坐标
- $y=0;
- // 生成hxnum_s的中间量
- $hxnum=$num;
- // 当前行或者列处理数据数的指针 当和$hxnum_n==$hxnum_s时 切换旋转方向
- $hxnum_n=0;
- // 当前行或者列需要处理数据的总数 $hxnum_s=floor($hxnum)
- $hxnum_s=$hxnum;
- // 循环总数
- $sum=$num*$num;
- $i=1;
- while ($i <= $num*$num) {
- // 坐标处理
- switch ($hxmethod) {
- case '1':
- ++$y;
- break;
- case '2';
- ++$x;
- break;
- case '3';
- --$y;
- break;
- case '4';
- --$x;
- break;
- }
- // 为回旋数数组相应位置赋值
- $hxArr[$x][$y]=$i;
- // 判断采用何种方向
- ++$hxnum_n;
- if ($hxnum_n==$hxnum_s){
- // 指针清零
- $hxnum_n=0;
- $hxnum-=0.5;
- $hxnum_s=floor($hxnum);
- ++$hxmethod;
- if ($hxmethod>4){
- $hxmethod-=4;
- }
- }
- ++$i;
- }
- return $hxArr;
- }
- ?>
ps:写程序花了半个小时 写注释花了40分钟
这写注释比写程序都累啊
原文地址:http://bbs.lampbrother.net/read-htm-tid-118284.html
相关热门文章
- 通讯录助手市场大战 触宝助手...
- C++ 将unsigned char数组 ...
- android实现多线程下载
- 8500WN12核顶配 极速稳定上网...
- 项目把控能力培养[持续整理]...
- IP Sec VPN与NAT破镜重圆
- 网站导航
- GoAgent图文设置教程
- UT2.0正式版下载
- tomcat6.0配置(含配置视频下载...
- 大家都是用什么来管理hadoop集...
- 网站被人挂了吗,添加了些程序...
- Nginx如何保证不走宕机的那个...
- 大家谈谈MYSQL客户端和服务器...
- 以下代码运行后为何会输出5?...
给主人留下些什么吧!~~
评论热议
这篇关于一层循环实现回旋数列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!