螺旋数组-直接按坐标计算对应值的螺旋矩阵算法

No_Data_Found 2010-12-22 11:10:54
题目来源 [博客园 ]螺旋数组算法[上篇]--直接模拟算法

http://www.cnblogs.com/Chinese-xu/archive/2010/12/21/1912542.html



实现算法如下


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>螺旋数组-直接按坐标计算对应值的螺旋矩阵算法</title>
<style>
td{
padding:3px 3px 3px 0;
text-align: center;
}
</style>

<script language="javascript">
function getNUM(n,x,y)
{
var r = 0;
if(x<=y & x+y <= n+1)
{
r = x;
return 4*(r-1)*n - 4*(r-1)*(r-1) +1 + y-r;
}
if(x<=y & x+y >= n+1)
{
r = n- y + 1;
return 4*(r-1)*n - 4*(r-1)*(r-1) + 1 + n-2*r + 1 + x - r;
}
if(x>=y & x+y >= n+1)
{
r = n - x +1;
return 4*(r-1)*n - 4*(r-1)*(r-1) + 1 + 3*n-6*r + 3 - y + r;
}
if(x>=y & x+y <= n+1)
{
r = y;
return 4*(r-1)*n - 4*(r-1)*(r-1) + 1 + 4*n-8*r + 4 - x + r;
}

return 0;
}

function show(N)
{
document.write ("<table>" );
for (var i=1;i<=N;i++)
{
document.write ("<tr>" );
for(var j=1;j<=N;j++)
{
document.write ("<td>" + getNUM(N,i,j) + "<td>" );
}
document.write ("</tr>" );
}
document.write ("</table>" );
}

show(10);

show(11);


show(20);

</script>
</head>

<body>
</body>
</html>

...全文
345 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dh20156 2010-12-26
  • 打赏
  • 举报
回复
原来在这边有过一个类似的帖子,参见:
http://www.jslab.org.cn/ipad.html?tag=drawbox
No_Data_Found 2010-12-22
  • 打赏
  • 举报
回复
基本思路是 计算 x,y 坐标所在的边 及该边的长度

其实还可以再精简一下

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧