watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

附代码

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <TITLE> 循环赛事日程表 </TITLE>
  5. <META NAME="Generator" CONTENT="EditPlus">
  6. <META NAME="Author" CONTENT="">
  7. <META NAME="Keywords" CONTENT="">
  8. <META NAME="Description" CONTENT="">
  9. <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
  10. <script type="text/javascript" src="json2.js"></script>
  11. <style>
  12. table,td{
  13. border:1px solid gray;
  14. text-align:center;
  15. }
  16. </style>
  17. <script>
  18. var arr=[];
  19. var calc_num=0;
  20. /*
  21. $(function(){
  22. for(var i=0;i<8;i++){
  23. arr.push(new Array());
  24. }
  25. game(3,8);
  26. for(var i=0;i<arr.length;i++){
  27. for(var j=0;j<arr[i].length;j++){
  28. document.write(arr[i][j]+"  ");
  29. }
  30. document.write("<br/>");
  31. }
  32. })*/
  33.  
  34. function init(){
  35. arr=[];
  36. calc_num=0;
  37. var num=Math.pow(2,parseInt($("#txt_k").val()));
  38. for(var i=0;i<num;i++){
  39. arr.push(new Array());
  40. }
  41. for(var i=0;i<num;i++)
  42. arr[0][i]=i+1;//设置日程表第一行
  43. initTable();
  44. }
  45.  
  46. function initTable(){
  47. $("#container").html('');
  48. var table=$("<table></table>");
  49. var num=Math.pow(2,parseInt($("#txt_k").val()));
  50. var width=document.body.clientWidth*0.4/num;
  51. //alert(num+":"+width);
  52. for(var i=0;i<num;i++){
  53. var tr=$("<tr style='width:"+width*num+"px;height:"+width+"px;'></tr>");
  54. for(var j=0;j<num;j++){
  55. var td=$("<td style='width:"+width+"px;height:"+width+"px;'> </td>");
  56. if(i==0)
  57. td.text(j+1);
  58. tr.append(td);
  59. }
  60. table.append(tr);
  61. }
  62. $("#container").append(table);
  63. }
  64. function calc(){
  65. var num=parseInt($("#txt_k").val());
  66. if(calc_num<num){
  67. game(calc_num,Math.pow(2,num-calc_num-1));
  68. calc_num++;
  69. }
  70. else
  71. alert("计算完成,请又一次初始化");
  72. }
  73.  
  74. function game(k,n){
  75. var m=Math.pow(2,k);//填充起始位置
  76. //for(var s=0;s<k;s++){
  77. //n=parseInt(n/2);
  78. for(var t=0;t<n;t++){//控制次数
  79. for(var i=m;i<m*2;i++){//i控制行
  80. for(var j=m;j<m*2;j++){//j控制列
  81. alert("arr["+i+"]["+(j+t*m*2)+"]="+arr[i-m][j+t*m*2-m]);
  82. arr[i][j+t*m*2]=arr[i-m][j+t*m*2-m];//右下角等于左上角
  83. $("table tr").eq(i).find("td").eq(j+t*m*2).text(arr[i][j+t*m*2]);
  84. alert("arr["+i+"]["+(j+t*m*2-m)+"]="+arr[i-m][j+t*m*2]);
  85. arr[i][j+t*m*2-m]=arr[i-m][j+t*m*2];//左下角等于右上角
  86. $("table tr").eq(i).find("td").eq(j+t*m*2-m).text(arr[i][j+t*m*2-m]);
  87. }
  88. }
  89. }
  90. //m=m*2;
  91. //}
  92.  
  93. }
  94.  
  95. </script>
  96. </HEAD>
  97. <BODY style="text-align:center">
  98. 级数:
  99. <input type="text" name="arr1" id="txt_k" style="width:60px" value="3"/>
  100. <input type="button" value="初始化" onclick="init()"/>
  101. <input type="button" value="下一步" onclick="calc()"/>
  102. <br/>
  103. <div id="container" style="margin:0 auto;"></div>
  104. </BODY>
  105. </HTML>

关于算法具体讲解可參考博客

0008算法笔记——【分治法】循环赛事日程表

js算法:分治法-循环赛事日程表的更多相关文章

  1. Java算法——分治法

         一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简 ...

  2. [C++] 分治法之棋盘覆盖、循环赛日程表

    一.分治的基本思想 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之. 对于一个规模为 n 的问题,若问题可以容易地解决,则直接解决,否则将其分解为 k 个规模较小的子 ...

  3. 算法与数据结构基础 - 分治法(Divide and Conquer)

    分治法基础 分治法(Divide and Conquer)顾名思义,思想核心是将问题拆分为子问题,对子问题求解.最终合并结果,分治法用伪代码表示如下: function f(input x size ...

  4. Leedcode算法专题训练(分治法)

    归并排序就是一个用分治法的经典例子,这里我用它来举例描述一下上面的步骤: 1.归并排序首先把原问题拆分成2个规模更小的子问题. 2.递归地求解子问题,当子问题规模足够小时,可以一下子解决它.在这个例子 ...

  5. 《github一天一道算法题》:分治法求数组最大连续子序列和

    看书.思考.写代码. /*************************************** * copyright@hustyangju * blog: http://blog.csdn. ...

  6. 算法笔记_065:分治法求逆序对(Java)

    目录 1 问题描述 2 解决方案 2.1 蛮力法 2.2 分治法(归并排序)   1 问题描述 给定一个随机数数组,求取这个数组中的逆序对总个数.要求时间效率尽可能高. 那么,何为逆序对? 引用自百度 ...

  7. js算法初窥05(算法模式02-动态规划与贪心算法)

    在前面的文章中(js算法初窥02(排序算法02-归并.快速以及堆排)我们学习了如何用分治法来实现归并排序,那么动态规划跟分治法有点类似,但是分治法是把问题分解成互相独立的子问题,最后组合它们的结果,而 ...

  8. js算法之最常用的排序

    引入 大学学习计算机语言的那几年,从c语言,到c++,再到数据结构JAVA..让我印象最深刻的还是最开始老师讲冒泡算法的时候,直到现在大四快毕业了我才渐渐通窍了.刚学前端的时候以为前端就是做出好看很炫 ...

  9. 分治法 - Divide and Conquer

    在计算机科学中,分治法是一种很重要的算法.分治法即『分而治之』,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的 ...

随机推荐

  1. (转)淘淘商城系列——发布dubbo服务

    http://blog.csdn.net/yerenyuan_pku/article/details/72758639 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入, ...

  2. js 类似于移动端购物车删除,左移动删除

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. intellij idea集成github

    IDEA配置github并上传项目 http://www.cnblogs.com/jinjiyese153/p/6796668.html github ssl验证 https://www.cnblog ...

  4. PageOffice NET MVC下使用

    1)下载官方demo http://www.zhuozhengsoft.com/dowm/ 2)选择此项下载 3)官方demo暂时还未修改支持42版本以上的谷歌浏览器 所以需要修改以下部分 /home ...

  5. 将java project打包成jar包,web project 打包成war包的几种演示 此博文包含图片

    转: http://blog.csdn.net/christine_ruan/article/details/7491559 http://developer.51cto.com/art/200907 ...

  6. docker centos7 配置和宿主机同网段IP

    docker centos7 配置和宿主机同网段IP 1.安装brctl 命令 # yum -y install bridge-utils 2.编辑网卡配置文件 # vi ifcfg-eno16777 ...

  7. qrcode.js扫码邀请

    //js引用部分<script src="../qrcode.js" type="text/javascript"></script> ...

  8. Linux 内核框架图

  9. 样例GeoQuiz应用开发 第2章

    先介绍一下MVC,Model View Controller,是软件架构中最常见的一种框架. 简单来说就是通过 controller 的控制去操作 model 层的数据,并且返回给 view 层展示, ...

  10. MYSQL每日一学 - 时间间隔表达式

    参考链接:https://dev.mysql.com/doc/refman/5.7/en/expressions.html Interval表达式(Temporal intervals)的使用 Int ...