博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
月初新浪的一道关于算法的笔试题
阅读量:5884 次
发布时间:2019-06-19

本文共 1013 字,大约阅读时间需要 3 分钟。

     月初36期的同学去新浪笔试,回来说有一道关于算法的题目没有做出来,当时听他说了我就把题目记在了心里,大概考虑了算法觉得可以实现,也没有去编码实验,上周末忽然又想起这道题,用二维数组的方法做了出来,在此贴出与大家交流,看还有没有更好的算法。
题目意思是这样的:给你一个大于0的整数n,请输出一个n行n列的数据表,并且要满足以下规律(以n=10为例)

本人编写的PHP代码如下:

<?php
//按要求构造二维数组
function loopfun($n){
$m=1; //计数(从1到$n的平方)
$i=0; //行号
$j=0; //列号
$k=1; //圈数
$a=array(); //存放生成的二维数组
while($m<=$n*$n){
if($i==$k-1){
if($j<$n-$k) $a[$i][$j++]=$m++; //横向递增填充
else $a[$i++][$j]=$m++;
}else{
if($i<$n-$k && $j==$n-$k) $a[$i++][$j]=$m++; //纵向递增填充
else{
if($j>$k-1) $a[$i][$j--]=$m++; //横向递减填充
else{
if($i>$k) $a[$i--][$j]=$m++; //纵向递减填充
else $k++; //开始新的一圈
}
}
}
}
return $a; //返回生成的二维数组
}
//测试数据
$x=10;
$arr=loopfun($x);
//输出
echo "<center><table border='0'cellspacing='1' cellpadding='5' bgcolor='blue'>";
for($i=0;$i<$x;$i++){ //循环每行
echo "<tr bgcolor='white' align='center'>";
for($j=0;$j<$x;$j++){ //循环每列
echo "<td>".$arr[$i][$j]."</td>";
}
echo "</tr>";
}
echo "</table></center>";
之前学过C语言,对算法之类的一直挺感兴趣,希望跟大家互相交流,共同进步!

原文地址:

转载于:https://www.cnblogs.com/seein/archive/2012/03/29/2457536.html

你可能感兴趣的文章
MySQL查询优化
查看>>
android app启动过程(转)
查看>>
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Applet
查看>>
高并发环境下,Redisson实现redis分布式锁
查看>>
关于浏览器的cookie
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
【吉光片羽】短信验证
查看>>
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
struts中的xwork源码下载地址
查看>>
ABP理论学习之仓储
查看>>
我的友情链接
查看>>
Tengine新增nginx upstream模块的使用
查看>>
CentOS图形界面和命令行切换
查看>>