一、前言

之前做了一个算法作业,叫做棋盘覆盖,本来需要用c语言来编写的,但是因为我的c语言是半桶水(哈哈),所以索性就把网上的c语言写法改成JavaScript写法,并且把它的覆盖效果显示出来

二、关键代码

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>算法作业2</title>
<style type="text/css">
#num{}
#chess{
margin-top:20px;
}
</style>
</head>
<body>
<div id="num">
<p>设置棋盘大小:
<input type="text" name="Num" size="4" />
</p>
<p>请输入特殊方格的位置:</p>
<p>
x:<input type="text" name="X" size="25"/><br />
y:<input type="text" name="Y" size="25" />
</p>
<p>
<input type="button" value="设置棋盘参数" /> <input type="button" value="生成棋盘" />
</p>
</div>
<div id="chess">
</div>
</body>
</html> <script type="text/javascript">
window.onload=function()
{//棋盘设置
var chess=document.getElementById('chess');
var input=document.getElementsByTagName('input')[3];
input.onclick=function()
{
var N=document.getElementsByTagName('input')[0].value;
var table=document.createElement('table');
chess.appendChild(table);
table.style.border='2px solid';
table.style.borderCollapse='collapse';
for(var i=0;i<N;i++)
{
var tr=document.createElement('tr');
table.appendChild(tr);
tr.style.height = "20px";
tr.style.border='1px solid #ccc';
for(var j=0;j<N;j++)
{
var td=document.createElement('td');
tr.appendChild(td);
td.style.width = "20px";
td.style.border='1px solid #ccc';
}
} }
var Out=document.getElementsByTagName('input')[4];
var Matrix = new Array();
for(var i=0;i<100; i++)
{ //初始化棋盘矩阵
Matrix[i] = new Array();
for(var j=0;j<100;j++)
{
Matrix[i][j]=0;
}
}
Out.onclick=function()
{ //棋盘生成
var r,c;
var X=document.getElementsByTagName('input')[1].value;
var Y=document.getElementsByTagName('input')[2].value;
var N=document.getElementsByTagName('input')[0].value;
chessBoard(0,0,X-1,Y-1,N);
for (r = 0; r < N; r++)
{
for (c = 0; c < N; c++)
{
var q=Matrix[r][c];
var table=document.getElementsByTagName('table')[0];
table.rows[r].cells[c].style.background='rgb('+13*q%256+','+43*q%256+','+73*q%256+')';
} }
}
var nCount = 0;
function chessBoard(tr,tc,dr,dc,size)
{
var s,t;
if (size == 1) return;
s =size/2;
t = ++nCount ;
if (dr < tr + s && dc < tc +s)
chessBoard(tr,tc,dr,dc,s);
else
{
Matrix[tr+s-1][tc+s-1] = t;
chessBoard(tr,tc,tr+s-1,tc+s-1,s);
}
if (dr < tr + s && dc >= tc + s )
chessBoard(tr,tc+s,dr,dc,s);
else
{
Matrix[tr+s-1][tc+s] = t;
chessBoard(tr,tc+s,tr+s-1,tc+s,s);
}
if (dr >= tr + s && dc < tc + s)
chessBoard(tr+s,tc,dr,dc,s);
else
{
Matrix[tr+s][tc+s-1] = t;
chessBoard(tr+s,tc,tr+s,tc+s-1,s);
}
if (dr >= tr + s && dc >= tc + s)
chessBoard(tr+s,tc+s,dr,dc,s);
else
{
Matrix[tr+s][tc+s] = t;
chessBoard(tr+s,tc+s,tr+s,tc+s,s);
}
}
}
</script>

三、效果

1.4*4棋盘覆盖

2.8*8棋盘覆盖

3.16*16棋盘覆盖

4.32*32棋盘覆盖

四、总结

棋盘覆盖的C语言代码我是参考课本的,为了能够把它用进JavaScript里面,突破口就是二维数组Matrix[][],只要能够获得它计算之后整个数组的数据,那么就有思路了。要记住填写进表单里面的数据是在点击按钮之后才获取的,所以获取元素节点的代码要放在onclick里面

最新文章

  1. phpMyAdmin提示:配置文件权限错误,无法写入!解决方法
  2. MySql 打开日志文件
  3. Visual Studio一秒变Node.js IDE
  4. Poj(3615),Floyd,最大值中的最小值
  5. 用CS-Script把Notepad++变身支持智能提示和运行代码的C#集成开发环境
  6. mysql中取系统当前时间
  7. LDA 资料整理
  8. Javascript 数字保留2位小数
  9. word异常关闭,找到丢失的word
  10. 日期类的使用(java)-蓝桥杯
  11. react-create-app 构建react项目的流程以及需要注意的地方
  12. Discuz网警过滤关键词库
  13. 强大而灵活的字体图标替代库iconfont
  14. s32 kickstart 批量自动安装系统
  15. 解决Ubuntu无法进行SSH连接的问题(以及如何使用SSH)
  16. python之路----hashlib模块
  17. const stirng* 类型的指针cp,当cout&lt;&lt;*cp&lt;&lt;endl:会提示没有与之匹配的“&lt;&lt;”运算符
  18. /proc文件夹介绍
  19. FWORK-数据存储篇 -- 范式与反模式 (学习和理解)
  20. 微信公众号非善意访问的限制 php curl 伪造UA

热门文章

  1. BNU 28887——A Simple Tree Problem——————【将多子树转化成线段树+区间更新】
  2. HDU 5313——Bipartite Graph——————【二分图+dp+bitset优化】
  3. nyoj 325——zb的生日——————【dp】
  4. MySQL之基本语句
  5. phpstorm一些简单配置
  6. python数据处理
  7. common-jdbc:一个基于SpringJdbcTemplate的高性能数据库操作工具类库
  8. hibernate open session in view 抛出异常解决方法
  9. 集合之equals与hashCode方法
  10. Java访问控制权限