📄 searchprocess.java~1~
字号:
package eightfigure;import java.io.*;import java.util.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.event.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author unascribed * @version 1.0 */class searchProcess { Vector open=new Vector(); Vector close=new Vector(); Vector father=new Vector(); boolean flag=true; Node source={0,Source,0,0,0}; Node dest={0,Dest,0,0,0}; public Vector execute(String Source,String Dest){ push(source,open); Node pnode=open.firstElement(); //Boolean flag=true; while(pnode){ Node pnode=pop(open); caculatemove(pnode); push(pnode,close); //if(equal(pnode,dest)) break; if (judgesame( pnode, desc)) {getresult(pnode); break; } extendnode(pnode); queopen(); pnode=open.firstElement(); } if(pnode.equals("")) System.err.print("初始到目标状态无解"); } ////////////////////////////////////// public void push(Node node,Vector ope){ ope.add(node); } public Node pop(Vector ope){ return ope.firstElement(); } public boolean judgesame(Node s1,Node s2){ for(int i=0;i<=s1.arr.length;i++){ for(int j=0;j<=s2.arr.length;j++){ if(!s1.arr[i][j]==s2.arr[i][j]) return false; } return true; } } public void exendnode(Node pnode){ int m=0; int n=0; for(int i=0;i<=2;i++) { for(int j=0;j<=2;j++) if(pnode.arr[i][j].equals("0")) { m=i; n=j; } } if(m-1>-1) { boolean flag=false; Node pnewnode=new Node(); for(int i=0;i<=2;i++) for(int j=0;j<=2;j++) pnewnode.arr[i][j]=pnode.arr[i][j]; if(!pnewnode.arr[i][j]=dest.arr[i][j]) { pnewnode.arr[m][n]=pnewnode.arr[m-1][n]; pnewnode.arr[m-1][n]='0'; } pnewnode.g++; pnewnode.h=caculatemove(pnewnode); pnewnode.f=pnewnode.g+pnewnode.h; k=0; while(k<open.size()) {flag=true; for(int i=0;i<=2;i++) { for(int j=0;j<=2;j++) if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j]) push(pnewnode,open); break; } k++; } } if(m+1<3) { boolean flag=false; Node pnewnode=new Node(); for(int i=0;i<=2;i++) for(int j=0;j<=2;j++) pnewnode.arr[i][j]=pnode.arr[i][j]; if(!pnewnode.arr[i][j]=dest.arr[i][j]) { pnewnode.arr[m][n]=pnewnode.arr[m+1][n]; pnewnode.arr[m+1][n]='0'; } pnewnode.g++; pnewnode.h=caculatemove(pnewnode); pnewnode.f=pnewnode.g+pnewnode.h; k=0; while(k<open.size()) {flag=true; for(int i=0;i<=2;i++) { for(int j=0;j<=2;j++) if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j]) push(pnewnode,open); break; } k++; } } if(n-1>-1) { boolean flag=false; Node pnewnode=new Node(); for(int i=0;i<=2;i++) for(int j=0;j<=2;j++) pnewnode.arr[i][j]=pnode.arr[i][j]; if(!pnewnode.arr[i][j]=dest.arr[i][j]) { pnewnode.arr[m][n]=pnewnode.arr[m][n-1]; pnewnode.arr[m][n-1]='0'; } pnewnode.g++; pnewnode.h=caculatemove(pnewnode); pnewnode.f=pnewnode.g+pnewnode.h; k=0; while(k<open.size()) {flag=true; for(int i=0;i<=2;i++) { for(int j=0;j<=2;j++) if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j]) push(pnewnode,open); break; } k++; } } if(n+1<3) { boolean flag=false; Node pnewnode=new Node(); for(int i=0;i<=2;i++) for(int j=0;j<=2;j++) pnewnode.arr[i][j]=pnode.arr[i][j]; if(!pnewnode.arr[i][j]=dest.arr[i][j]) { pnewnode.arr[m][n]=pnewnode.arr[m][n+1]; pnewnode.arr[m][n+1]='0'; } pnewnode.g++; pnewnode.h=caculatemove(pnewnode); pnewnode.f=pnewnode.g+pnewnode.h; k=0; while(k<open.size()) {flag=true; for(int i=0;i<=2;i++) { for(int j=0;j<=2;j++) if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j]) push(pnewnode,open); break; } k++; } } } public void queopen(){ for(int i=0;i<open.size();i++){ Node min=new Node(); Node nod=new Node(); int position; min=open.firstElement(); if((Node)open.get(i)).f<((Node)min).f) { position=i; } } nod=open. } } /* public void exendnode(Node pnode){ int m=0; int n=0; for(int i=0;i<=2;i++) { for(int j=0;j<=2;j++) if(pnode.arr[i][j].equals("0")) { m=i; n=j; } } if(m-1>-1) { boolean flag=false; Node pnewnode=new Node(); for(int i=0;i<=2;i++) for(int j=0;j<=2;j++) pnewnode[i][j]=pnode[i][j]; pnewnode[m][n]=pnewnode[m-1][n]; pnewnode[m-1][n]='0'; k=0; while(k<open.size()) {flag=true; for(int i=0;i<=2;i++) { for(int j=0;j<=2;j++) if(pnewnode.arr[i][j]!=((Node)open.get(k)).arr[i][j]) { flag=false; break; } if(flag=false) break; } if(flag=true) break; k++; } if(flag=true) { if(costnew(pnode,pnewnode)>cost(open.get(k)) } }*/ public int caculatemove(Node nod){ } class Node(String[][] arr,int f,int g,Vector father) { }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -