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

📄 diamond.java

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

public class Diamond{
	 public int diamond[];
	 public int objDiamond[];
	 public int blank;
	 public int lt;
	 
	 public int upValue(int num){
	 	 int sum=0;
	 	 switch(num){
	 	 	 case 3:if(this.diamond[3]==this.objDiamond[0])sum++;
	 	 	        if(this.diamond[1]==this.objDiamond[1])sum++;
	 	 	        if(this.diamond[2]==this.objDiamond[2])sum++;
	 	 	        break;
	 	 	 case 4:if(this.diamond[4]==this.objDiamond[1])sum++;
	 	 	        if(this.diamond[0]==this.objDiamond[0])sum++;
	 	 	        if(this.diamond[2]==this.objDiamond[2])sum++;
	 	 	        break;
	 	 	 case 5:if(this.diamond[5]==this.objDiamond[2])sum++;
	 	 	        if(this.diamond[0]==this.objDiamond[0])sum++;
	 	 	        if(this.diamond[1]==this.objDiamond[1])sum++;
	 	 	        break;
	 	 	 case 6:if(this.diamond[6]==this.objDiamond[3])sum++;
	 	 	        if(this.diamond[4]==this.objDiamond[4])sum++;
	 	 	        if(this.diamond[5]==this.objDiamond[5])sum++;
	 	 	        break;
	 	 	 case 7:if(this.diamond[7]==this.objDiamond[4])sum++;
	 	 	        if(this.diamond[3]==this.objDiamond[3])sum++;
	 	 	        if(this.diamond[5]==this.objDiamond[5])sum++;
	 	 	        break;
	 	 	 case 8:if(this.diamond[8]==this.objDiamond[5])sum++;
	 	 	        if(this.diamond[3]==this.objDiamond[3])sum++;
	 	 	        if(this.diamond[4]==this.objDiamond[4])sum++;
	 	 	        break;
	 	 	}
	 	 return sum;	
	 	}
	 	
	 public int downValue(int num){
	 	 int sum=0;
	 	 switch(num){
	 	 	 case 0:if(this.diamond[0]==this.objDiamond[3])sum++;
	 	 	        if(this.diamond[4]==this.objDiamond[4])sum++;
	 	 	        if(this.diamond[5]==this.objDiamond[5])sum++;
	 	 	        break;
	 	 	 case 1:if(this.diamond[1]==this.objDiamond[4])sum++;
	 	 	        if(this.diamond[3]==this.objDiamond[3])sum++;
	 	 	        if(this.diamond[5]==this.objDiamond[5])sum++;
	 	 	        break;
	 	 	 case 2:if(this.diamond[2]==this.objDiamond[5])sum++;
	 	 	        if(this.diamond[3]==this.objDiamond[3])sum++;
	 	 	        if(this.diamond[4]==this.objDiamond[4])sum++;
	 	 	        break;
	 	 	 case 3:if(this.diamond[3]==this.objDiamond[6])sum++;
	 	 	        if(this.diamond[7]==this.objDiamond[7])sum++;
	 	 	        if(this.diamond[8]==this.objDiamond[8])sum++;
	 	 	        break;
	 	 	 case 4:if(this.diamond[4]==this.objDiamond[7])sum++;
	 	 	        if(this.diamond[6]==this.objDiamond[6])sum++;
	 	 	        if(this.diamond[8]==this.objDiamond[8])sum++;
	 	 	        break;
	 	 	 case 5:if(this.diamond[5]==this.objDiamond[8])sum++;
	 	 	        if(this.diamond[6]==this.objDiamond[6])sum++;
	 	 	        if(this.diamond[7]==this.objDiamond[7])sum++;
	 	 	        break;
	 	 	}
	 	 return sum;	
	 	}
	 
	 public int leftValue(int num){
	 	 int sum=0;
	 	 switch(num){
	 	 	 case 1:if(this.diamond[1]==this.objDiamond[0])sum++;
	 	 	        if(this.diamond[3]==this.objDiamond[3])sum++;
	 	 	        if(this.diamond[6]==this.objDiamond[6])sum++;
	 	 	        break;
	 	 	 case 4:if(this.diamond[4]==this.objDiamond[3])sum++;
	 	 	        if(this.diamond[0]==this.objDiamond[0])sum++;
	 	 	        if(this.diamond[6]==this.objDiamond[6])sum++;
	 	 	        break;
	 	 	 case 7:if(this.diamond[7]==this.objDiamond[6])sum++;
	 	 	        if(this.diamond[0]==this.objDiamond[0])sum++;
	 	 	        if(this.diamond[3]==this.objDiamond[3])sum++;
	 	 	        break;
	 	 	 case 2:if(this.diamond[2]==this.objDiamond[1])sum++;
	 	 	        if(this.diamond[4]==this.objDiamond[4])sum++;
	 	 	        if(this.diamond[7]==this.objDiamond[7])sum++;
	 	 	        break;
	 	 	 case 5:if(this.diamond[5]==this.objDiamond[4])sum++;
	 	 	        if(this.diamond[1]==this.objDiamond[1])sum++;
	 	 	        if(this.diamond[7]==this.objDiamond[7])sum++;
	 	 	        break;
	 	 	 case 8:if(this.diamond[8]==this.objDiamond[7])sum++;
	 	 	        if(this.diamond[1]==this.objDiamond[1])sum++;
	 	 	        if(this.diamond[4]==this.objDiamond[4])sum++;
	 	 	        break;
	 	 	}
	 	 return sum;	
	 	}
	 		
	 public int rightValue(int num){
	 	 int sum=0;
	 	 switch(num){
	 	 	 case 0:if(this.diamond[0]==this.objDiamond[1])sum++;
	 	 	        if(this.diamond[4]==this.objDiamond[4])sum++;
	 	 	        if(this.diamond[7]==this.objDiamond[7])sum++;
	 	 	        break;
	 	 	 case 3:if(this.diamond[3]==this.objDiamond[4])sum++;
	 	 	        if(this.diamond[1]==this.objDiamond[1])sum++;
	 	 	        if(this.diamond[7]==this.objDiamond[7])sum++;
	 	 	        break;
	 	 	 case 6:if(this.diamond[6]==this.objDiamond[7])sum++;
	 	 	        if(this.diamond[1]==this.objDiamond[1])sum++;
	 	 	        if(this.diamond[4]==this.objDiamond[4])sum++;
	 	 	        break;
	 	 	 case 1:if(this.diamond[1]==this.objDiamond[2])sum++;
	 	 	        if(this.diamond[5]==this.objDiamond[5])sum++;
	 	 	        if(this.diamond[8]==this.objDiamond[8])sum++;
	 	 	        break;
	 	 	 case 4:if(this.diamond[4]==this.objDiamond[5])sum++;
	 	 	        if(this.diamond[2]==this.objDiamond[2])sum++;
	 	 	        if(this.diamond[8]==this.objDiamond[8])sum++;
	 	 	        break;
	 	 	 case 7:if(this.diamond[7]==this.objDiamond[8])sum++;
	 	 	        if(this.diamond[2]==this.objDiamond[2])sum++;
	 	 	        if(this.diamond[5]==this.objDiamond[5])sum++;
	 	 	        break;
	 	 	}
	 	 return sum;	
	 	}
	 
	 public void mov(){
	 	 switch(this.blank){
	 	 	 case 0:
	 	 	        if(leftValue(1)>upValue(3)&&this.lt!=3){
	 	 	        	this.diamond[0]=this.diamond[1];this.diamond[1]=0;this.blank=1;this.lt=1;}
	 	 	        else if(this.lt!=9){this.diamond[0]=this.diamond[3];this.diamond[3]=0;this.blank=3;this.lt=2;}	
	 	 	        break;
	 	 	 case 1:
	 	 	        if(rightValue(0)>=upValue(4)&&rightValue(0)>=leftValue(2)&&this.lt!=1){
	 	 	        	  this.diamond[1]=this.diamond[0];this.diamond[0]=0;this.blank=0;this.lt=3;}
	 	 	        else
	 	 	           if(upValue(4)>=rightValue(0)&&upValue(4)>=leftValue(2)&&this.lt!=12){
	 	 	        	  this.diamond[1]=this.diamond[4];this.diamond[4]=0;this.blank=4;this.lt=4;}
	 	 	           else if(this.lt!=7){
	 	 	        	  this.diamond[1]=diamond[2];this.diamond[2]=0;this.blank=2;this.lt=5;}
	 	 	        break;
	 	 	 case 2:
	 	 	        if(rightValue(1)>=upValue(5)&&this.lt!=5){diamond[2]=diamond[1];diamond[1]=0;this.blank=1;this.lt=7;}
	 	 	        else if(this.lt!=16){this.diamond[2]=diamond[5];this.diamond[5]=0;this.blank=5;this.lt=8;}
	 	 	        break;
	 	 	 case 3:
	 	 	        if(downValue(0)>=upValue(6)&&downValue(0)>=leftValue(4)&&this.lt!=2){
	 	 	        	  this.diamond[3]=this.diamond[0];this.diamond[0]=0;this.blank=0;this.lt=9;}
	 	 	        else
	 	 	           if(upValue(6)>=downValue(0)&&upValue(6)>=leftValue(4)&&this.lt!=19){
	 	 	        	  this.diamond[3]=diamond[6];this.diamond[6]=0;this.blank=6;this.lt=10;}
	 	 	           else if(this.lt!=15){
	 	 	        	  this.diamond[3]=this.diamond[4];this.diamond[4]=0;this.blank=4;this.lt=11;}
	 	 	        break;
	 	 	 case 4:
	 	 	        if(downValue(1)>=upValue(7)&&downValue(1)>=leftValue(5)&&downValue(1)>=rightValue(3)&&this.lt!=4){
	 	 	        	  this.diamond[4]=this.diamond[1];this.diamond[1]=0;this.blank=1;this.lt=12;}
	 	 	        else
	 	 	           if(upValue(7)>=downValue(1)&&upValue(7)>=leftValue(5)&&upValue(7)>=rightValue(3)&&this.lt!=21){
	 	 	        	  this.diamond[4]=this.diamond[7];this.diamond[7]=0;this.blank=7;this.lt=13;}
	 	 	           else
	 	 	             if(leftValue(5)>=upValue(7)&&leftValue(5)>=downValue(1)&&leftValue(5)>=rightValue(3)&&this.lt!=18){
	 	 	        	     this.diamond[4]=this.diamond[5];this.diamond[4]=0;this.blank=4;this.lt=14;}
	 	 	        	 else if(this.lt!=11){
	 	 	        	 	 this.diamond[4]=this.diamond[3];this.diamond[3]=0;this.blank=3;this.lt=15;}    
	 	 	        break;
	 	 	 case 5:
	 	 	        if(downValue(2)>=upValue(8)&&downValue(2)>=rightValue(4)&&this.lt!=8){
	 	 	        	  this.diamond[5]=this.diamond[2];this.diamond[2]=0;this.blank=2;this.lt=16;}
	 	 	        else
	 	 	           if(upValue(8)>=downValue(2)&&upValue(8)>=rightValue(4)&&this.lt!=25){
	 	 	        	  this.diamond[5]=this.diamond[8];this.diamond[8]=0;this.blank=8;this.lt=17;}
	 	 	           else if(this.lt!=14){
	 	 	        	  this.diamond[5]=this.diamond[4];this.diamond[4]=0;this.blank=4;this.lt=18;}
	 	 	        break;
	 	 	 case 6:
	 	 	        if(downValue(3)>=leftValue(7)&&this.lt!=10){
	 	 	        	this.diamond[6]=this.diamond[3];this.diamond[3]=0;this.blank=3;this.lt=19;}
	 	 	        else if(this.lt!=22){this.diamond[6]=this.diamond[7];this.diamond[7]=0;this.blank=7;this.lt=20;}
	 	 	        break;
	 	 	 case 7:
	 	 	        if(downValue(4)>=rightValue(6)&&downValue(4)>=leftValue(8)&&this.lt!=13){
	 	 	        	  this.diamond[7]=this.diamond[4];this.diamond[4]=0;this.blank=4;this.lt=21;}
	 	 	        else
	 	 	           if(rightValue(6)>=downValue(4)&&rightValue(6)>=leftValue(8)&&this.lt!=20){
	 	 	        	  this.diamond[7]=this.diamond[6];this.diamond[6]=0;this.blank=6;this.lt=22;}
	 	 	           else if(this.lt!=24){
	 	 	        	  this.diamond[7]=this.diamond[8];this.diamond[8]=0;this.blank=8;this.lt=23;}
	 	 	        break;
	 	 	 case 8:
	 	 	        if(rightValue(7)>=downValue(5)&&this.lt!=23){
	 	 	        	this.diamond[8]=this.diamond[7];this.diamond[7]=0;this.blank=7;this.lt=24;}
	 	 	        else if(this.lt!=17){this.diamond[8]=this.diamond[5];this.diamond[5]=0;this.blank=5;this.lt=25;}
	 	 	        break;
	 	 	}
	 	}
	 	
	 public boolean finish(){
	 	 for(int i=0;i<diamond.length;i++){
	 	 	 if(this.diamond[i]!=this.objDiamond[i])return false;
	 	 	}
	 	 return true;	
	 	}	
	 	
	 public void display(){
	 	 for(int i=0;i<diamond.length;i++){
	 	 	 System.out.print(this.diamond[i]+" ");
	 	 	 if((i+1)%3==0)System.out.println();
	 	 	}
	 	}	
	}
	
 class test{
 	 public static void main(String args[])throws IOException{
 	 	 Diamond d=new Diamond();
 	 	 d.diamond=new int[9];
 	 	 d.objDiamond=new int[9];
 	 	 int a[]={2,8,3,1,6,4,7,0,5};
 	 	 int b[]={1,2,3,8,0,4,7,6,5};
 	 	 for(int i=0;i<a.length;i++){
 	 	 	if(a[i]==0)d.blank=i;
 	 	    d.diamond[i]=a[i];
 	 	   } 
 	 	 for(int i=0;i<b.length;i++)
 	 	   d.objDiamond[i]=b[i];  
 	 	 d.lt=999;  
 	 	   
 	 	 while(true){
 	 	 	 d.display();
 	 	 	 System.in.read();
 	 	 	 System.in.read();
 	 	 	 d.mov();
 	 	 	 if(d.finish()){d.display();System.in.read();System.in.read();break;}
 	 	 	}
 	 	}
 	}	

⌨️ 快捷键说明

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