js算法:分治法-循环赛事日程表
2024-09-04 22:12:26
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
附代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 循环赛事日程表 </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="json2.js"></script>
<style>
table,td{
border:1px solid gray;
text-align:center;
}
</style>
<script>
var arr=[];
var calc_num=0;
/*
$(function(){
for(var i=0;i<8;i++){
arr.push(new Array());
}
game(3,8);
for(var i=0;i<arr.length;i++){
for(var j=0;j<arr[i].length;j++){
document.write(arr[i][j]+" ");
}
document.write("<br/>");
}
})*/ function init(){
arr=[];
calc_num=0;
var num=Math.pow(2,parseInt($("#txt_k").val()));
for(var i=0;i<num;i++){
arr.push(new Array());
}
for(var i=0;i<num;i++)
arr[0][i]=i+1;//设置日程表第一行
initTable();
} function initTable(){
$("#container").html('');
var table=$("<table></table>");
var num=Math.pow(2,parseInt($("#txt_k").val()));
var width=document.body.clientWidth*0.4/num;
//alert(num+":"+width);
for(var i=0;i<num;i++){
var tr=$("<tr style='width:"+width*num+"px;height:"+width+"px;'></tr>");
for(var j=0;j<num;j++){
var td=$("<td style='width:"+width+"px;height:"+width+"px;'> </td>");
if(i==0)
td.text(j+1);
tr.append(td);
}
table.append(tr);
}
$("#container").append(table);
}
function calc(){
var num=parseInt($("#txt_k").val());
if(calc_num<num){
game(calc_num,Math.pow(2,num-calc_num-1));
calc_num++;
}
else
alert("计算完成,请又一次初始化");
} function game(k,n){
var m=Math.pow(2,k);//填充起始位置
//for(var s=0;s<k;s++){
//n=parseInt(n/2);
for(var t=0;t<n;t++){//控制次数
for(var i=m;i<m*2;i++){//i控制行
for(var j=m;j<m*2;j++){//j控制列
alert("arr["+i+"]["+(j+t*m*2)+"]="+arr[i-m][j+t*m*2-m]);
arr[i][j+t*m*2]=arr[i-m][j+t*m*2-m];//右下角等于左上角
$("table tr").eq(i).find("td").eq(j+t*m*2).text(arr[i][j+t*m*2]);
alert("arr["+i+"]["+(j+t*m*2-m)+"]="+arr[i-m][j+t*m*2]);
arr[i][j+t*m*2-m]=arr[i-m][j+t*m*2];//左下角等于右上角
$("table tr").eq(i).find("td").eq(j+t*m*2-m).text(arr[i][j+t*m*2-m]);
}
}
}
//m=m*2;
//} } </script>
</HEAD>
<BODY style="text-align:center">
级数:
<input type="text" name="arr1" id="txt_k" style="width:60px" value="3"/>
<input type="button" value="初始化" onclick="init()"/>
<input type="button" value="下一步" onclick="calc()"/>
<br/>
<div id="container" style="margin:0 auto;"></div>
</BODY>
</HTML>
关于算法具体讲解可參考博客
0008算法笔记——【分治法】循环赛事日程表
最新文章
- 软件工程的引入:Scrum开发框架总结
- 自己动手写一个简单的MVC框架(第一版)
- Android onMeasure方法介绍
- ubuntu下安装基本配置
- ANTLR4权威参考手册
- web_reg_find()查询信息为变量
- Multiply Strings 大数相乘 java
- Spark-GraphxAPI学习笔记
- centos 7.X &; centos6.X 防火墙基本命令
- WKWebView使用方法
- js运用6
- Python pyYAML模块
- Redis 入门 安装 命令
- 模拟js中注册表单验证
- JS易错知识点
- Oracle锦集
- Android 模仿QQ空间风格的 UI
- ClickOnce部署winform
- ubuntu 安装chrome 和chromedriver
- git多仓库管理