zoukankan      html  css  js  c++  java
  • js算法:分治法-循环赛事日程表

    附代码


    <!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*num+"px;height:"+width+"px;'></tr>");
    		   for(var j=0;j<num;j++){
    		     var td=$("<td style='"+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="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算法笔记——【分治法】循环赛事日程表

  • 相关阅读:
    ue4同c#通信时的中文乱码问题
    ue4 fstring 和std::string互转
    LinqToExcel 简洁与优美开源库
    虚幻UE4的后处理特效介绍 http://www.52vr.com/thread-31215-1-1.html
    为什么你应该使用OpenGL而不是DirectX?
    会写代码是你创业路上的包袱
    (转载)怎样解决SQL Server内存不断增加问题
    UE4 Pak 相关知识总结
    淘宝运营实战操作大纲
    淘宝运营
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6909403.html
Copyright © 2011-2022 走看看