⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 block.java

📁 该算法首先根据输入的节点数(该程序可选的有3X3
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.*;

public class Block{
	 public String []blockString;
	 private Block []childBlock;
	 private int access;
	 public Block []route;
	 private int dm;	 
	 
	 public Block(String []xBlock){
	 	 this.blockString=new String[xBlock.length];
	 	 for(int i=0;i<xBlock.length;i++)
	 	    blockString[i]=new String(xBlock[i]);
	 	 this.childBlock=new Block[4];
	 	 for(int i=0;i<4;i++)this.childBlock[i]=null;
	 	 access=0;
	 	}  
	 	
	 public boolean createBlockTree(String []yBlock,int dm){
	 	 Block p;
	 	 String []xsBlock;
	 	 String []xBlock;
	 	 int j=0;
	 	 int d=0;
	 	 p=this;
	 	 int blockN=(int)Math.sqrt(p.blockString.length);
	 	 while(!complete(p.blockString,yBlock)){
	 	 	 p.access=1;
	 	 	 xsBlock=new String[p.blockString.length];
	 	 	 xBlock=new String[p.blockString.length];
	 	 	 for(int i=0;i<p.blockString.length;i++){xsBlock[i]=new String(p.blockString[i]);xBlock[i]=new String(p.blockString[i]);}
	 	 	 switch(stateSpace(xsBlock)){
	 	 	 	 case 0:xBlock[0]=xsBlock[blockN].toString();xBlock[blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[blockN]=xsBlock[blockN].toString();
	 	 	 	        xBlock[0]=xsBlock[1].toString();xBlock[1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[1]=xsBlock[1].toString();	
	 	 	 	        break;	
	 	 	 	 case 1:xBlock[blockN-1]=xsBlock[blockN-2].toString();xBlock[blockN-2]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[blockN-2]=xsBlock[blockN-2].toString();	
	 	 	 	        xBlock[blockN-1]=xsBlock[2*blockN-1].toString();xBlock[2*blockN-1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[2*blockN-1]=xsBlock[2*blockN-1].toString();
	 	 	 	        break;
	 	 	 	 case 2:xBlock[xBlock.length-blockN]=xsBlock[xBlock.length-2*blockN].toString();xBlock[xBlock.length-2*blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[xBlock.length-2*blockN]=xsBlock[xBlock.length-2*blockN].toString();
	 	 	 	        xBlock[xBlock.length-blockN]=xsBlock[xBlock.length-blockN+1].toString();xBlock[xBlock.length-blockN+1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        break;
	 	 	 	 case 3:xBlock[xBlock.length-1]=xsBlock[xBlock.length-2].toString();xBlock[xBlock.length-2]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[xBlock.length-2]=xsBlock[xBlock.length-2].toString();
	 	 	 	        xBlock[xBlock.length-1]=xsBlock[xBlock.length-1-blockN].toString();xBlock[xBlock.length-1-blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        break;
	 	 	 	 case 4:int space=placeSpace(xsBlock);
	 	 	 	        xBlock[space]=xsBlock[space-1].toString();xBlock[space-1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space-1]=xsBlock[space-1].toString();
	 	 	 	        xBlock[space]=xsBlock[space+1].toString();xBlock[space+1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space+1]=xsBlock[space+1].toString();	
	 	 	 	        xBlock[space]=xsBlock[space+blockN].toString();xBlock[space+blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space+blockN]=xsBlock[space+blockN].toString();
	 	 	 	        break;	 	 	 	   
	 	 	 	 case 5:space=placeSpace(xsBlock);
	 	 	 	        xBlock[space]=xsBlock[space+1].toString();xBlock[space+1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space+1]=xsBlock[space+1].toString();
	 	 	 	        xBlock[space]=xsBlock[space-blockN].toString();xBlock[space-blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space-blockN]=xsBlock[space-blockN].toString();
	 	 	 	        xBlock[space]=xsBlock[space+blockN].toString();xBlock[space+blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space+blockN]=xsBlock[space+blockN].toString();	
	 	 	 	        break;
	 	 	 	 case 6:space=placeSpace(xsBlock);
	 	 	 	        xBlock[space]=xsBlock[space-blockN].toString();xBlock[space-blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space-blockN]=xsBlock[space-blockN].toString();
	 	 	 	        xBlock[space]=xsBlock[space+blockN].toString();xBlock[space+blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space+blockN]=xsBlock[space+blockN].toString();	
	 	 	 	        xBlock[space]=xsBlock[space-1].toString();xBlock[space-1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space-1]=xsBlock[space-1].toString();
	 	 	 	        break;
	 	 	 	 case 7:space=placeSpace(xsBlock);
	 	 	 	        xBlock[space]=xsBlock[space-1].toString();xBlock[space-1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space-1]=xsBlock[space-1].toString();
	 	 	 	        xBlock[space]=xsBlock[space+1].toString();xBlock[space+1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space+1]=xsBlock[space+1].toString();	
	 	 	 	        xBlock[space]=xsBlock[space-blockN].toString();xBlock[space-blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space-blockN]=xsBlock[space-blockN].toString();
	 	 	 	        break;
	 	 	 	 case 8:space=placeSpace(xsBlock);
	 	 	 	        xBlock[space]=xsBlock[space-blockN].toString();xBlock[space-blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space-blockN]=xsBlock[space-blockN].toString();
	 	 	 	        xBlock[space]=xsBlock[space+blockN].toString();xBlock[space+blockN]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++)if(p.childBlock[i]==null)break;
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space+blockN]=xsBlock[space+blockN].toString();
	 	 	 	        xBlock[space]=xsBlock[space-1].toString();xBlock[space-1]="";
	 	 	 	        if(insertOK(this,xBlock)){
	 	 	 	        	 int i;
	 	 	 	        	 for(i=0;i<4;i++){if(p.childBlock[i]==null)break;}
	 	 	 	        	 p.childBlock[i]=new Block(xBlock);
	 	 	 	        	}
	 	 	 	        xBlock[space-1]=xsBlock[space-1].toString();
	 	 	 	        xBlock[space]=xsBlock[space+1].toString();xBlock[space+1]="";
	 	 	 	        if(insertOK(this,xBlock)){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -