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

📄 lastwindow2.java

📁 我传的第一个是八数码的盲目搜索,而这个是A*,请指教
💻 JAVA
字号:
/*
 * LastWindow.java
 *
 * Created on 2007年10月21日, 下午4:42
 */

package text2;

import javax.swing.table.TableModel;

/**
 *
 * @author  user
 */
public class LastWindow2 extends javax.swing.JFrame {
       private TableModel data;
       TableModel start;
       TableModel end;
      
     public int a[]=new int[9];
     public int c[]=new int[9];
    /** Creates new form LastWindow */
    public LastWindow2() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
    private void initComponents() {
        jTable2 = new javax.swing.JTable();
        jTable1 = new javax.swing.JTable();
        jButton1 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("\u516b\u6570\u7801\u95ee\u9898A*\u641c\u7d22");
        jTable2.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null},
                {null, null, null},
                {null, null, null}
            },
            new String [] {
                "Title 1", "", ""
            }
        ));

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null},
                {null, null, null},
                {null, null, null}
            },
            new String [] {
                "Title 1", "", ""
            }
        ));

        jButton1.setText("\u641c\u7d22");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jLabel1.setText("\u8d77\u59cb\u7ed3\u70b9");

        jLabel2.setText("\u76ee\u6807\u7ed3\u70b9");

        jLabel3.setText("\u516b\u6570\u7801A*\u641c\u7d22");

        jLabel4.setText("\u662f\u5426\u6709\u89e3");

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                        .add(54, 54, 54)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                            .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                                .add(jLabel1)
                                .add(jLabel4))
                            .add(jLabel2))
                        .add(36, 36, 36)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                                .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 26, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 169, Short.MAX_VALUE)
                                .add(jButton1))
                            .add(layout.createSequentialGroup()
                                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING, false)
                                    .add(org.jdesktop.layout.GroupLayout.LEADING, jTable1, 0, 0, Short.MAX_VALUE)
                                    .add(org.jdesktop.layout.GroupLayout.LEADING, jTable2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 103, Short.MAX_VALUE))
                                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 149, Short.MAX_VALUE))))
                    .add(layout.createSequentialGroup()
                        .add(116, 116, 116)
                        .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 135, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 26, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .add(24, 24, 24)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 31, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jTable2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .add(48, 48, 48)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 27, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jTable1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .add(24, 24, 24)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jLabel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 23, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jButton1)
                    .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(43, Short.MAX_VALUE))
        );
        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO 将在此处添加您的处理代码:
        int parentnum=0;
          if(evt.getActionCommand()=="搜索"){
           setData(jTable2.getModel());
            start=getData();
            
            setData(jTable1.getModel());
            end=getData();
         String s0=(String)(start.getValueAt(0,0));
         if(s0!=null)
         a[0]=Integer.parseInt(s0);
         String s1=(String)(start.getValueAt(0,1));
          if(s1!=null)
         a[1]=Integer.parseInt(s1);
         
         String s2=(String)(start.getValueAt(0,2));
          if(s2!=null)
         a[2]=Integer.parseInt(s2);
         String s3=(String)(start.getValueAt(1,0));
          if(s3!=null)
         a[3]=Integer.parseInt(s3);
         String s4=(String)(start.getValueAt(1,1));
          if(s4!=null)
         a[4]=Integer.parseInt(s4);
         String s5=(String)(start.getValueAt(1,2));
          if(s5!=null)
         a[5]=Integer.parseInt(s5);
         String s6=(String)(start.getValueAt(2,0));
          if(s6!=null)
         a[6]=Integer.parseInt(s6);
         String s7=(String)(start.getValueAt(2,1));
          if(s7!=null)
         a[7]=Integer.parseInt(s7);
         String s8=(String)(start.getValueAt(2,2));
           if(s8!=null)
      a[8]=Integer.parseInt(s8);
       String s10=(String)(end.getValueAt(0,0));
        if(s10!=null)
         c[0]=Integer.parseInt(s10);
         String s11=(String)(end.getValueAt(0,1));
          if(s11!=null)
         c[1]=Integer.parseInt(s11);
         String s12=(String)(end.getValueAt(0,2));
          if(s12!=null)
         c[2]=Integer.parseInt(s12);
         String s13=(String)(end.getValueAt(1,0));
          if(s13!=null)
         c[3]=Integer.parseInt(s13);
         String s14=(String)(end.getValueAt(1,1));
          if(s14!=null)
         c[4]=Integer.parseInt(s14);
         String s15=(String)(end.getValueAt(1,2));
          if(s15!=null)
         c[5]=Integer.parseInt(s15);
         String s16=(String)(end.getValueAt(2,0));
          if(s16!=null)
         c[6]=Integer.parseInt(s16);
         
         String s17=(String)(end.getValueAt(2,1));
          if(s17!=null)
         c[7]=Integer.parseInt(s17);
     String s18=(String)(end.getValueAt(2,2));
      if(s18!=null)
         c[8]=Integer.parseInt(s18);
          
        int x=judge(a);
        int y=judge(c);
        if(judge1(x,y)==1){
          jTextField1.setText("有解");
          EightNum eightnum=new EightNum(a,c);
           tanchu window=new tanchu();
           eightnum.扩展_并查找结点(eightnum.初始结点);
           while(eightnum.f!=0){
               
             eightnum.局部结点1=eightnum.取最优结点();
             eightnum.open[eightnum.opennum]=eightnum.局部结点1;
             eightnum.opennum=eightnum.opennum+1;
             eightnum.扩展_并查找结点(eightnum.局部结点1);
             
            
           }
           
           eightnum.中间结点=eightnum.目标结点.parent;
            while(eightnum.中间结点.等于(eightnum.初始结点)==false){
          eightnum.路径[parentnum]=eightnum.中间结点;
          parentnum++;
          //eightnum.printnode(eightnum.temp);
          eightnum.中间结点=eightnum.中间结点.parent;
           
           
           }
           eightnum.路径[parentnum]=eightnum.初始结点;
           System.out.println("从开始结点到目标结点的路径是");
           while(parentnum>0){
             
               eightnum.打印结点(eightnum.路径[parentnum]);
               System.out.println(eightnum.路径[parentnum].深度+eightnum.路径[parentnum].不相同结点个数(eightnum.目标结点));
               System.out.println("     "+" ↓ ");
               System.out.println("     "+" ↓ ");
               parentnum--;
           }
           eightnum.打印结点(eightnum.目标结点);
           
           
           
        }
        else{
            jTextField1.setText("无解");
        }
        
         
        }  
        
    }//GEN-LAST:event_jButton1ActionPerformed
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new LastWindow2().setVisible(true);
            }
        });
    }
      public TableModel getData(){
        return data;
    }
    
    public void setData(TableModel data){
        this.data = data;
    }
      public int judge(int m[]){
       
        int total=0;
        for(int i=8;i>=0;i--){
            if(i>0){
          for(int j=i-1;j>=0;j--){
             
              if(m[i]>m[j]){
                  if(m[j]!=0){
                   total++;
                  }
              }
          }
        
        }
    
        }
    return total;
    }
    public int judge1(int p,int q){
    
    if((p%2)!=0&&(q%2)!=0){
    return 1;
    
    }
    else return 0;
    }
    
    // 变量声明 - 不进行修改//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JTable jTable1;
    private javax.swing.JTable jTable2;
    private javax.swing.JTextField jTextField1;
    // 变量声明结束//GEN-END:variables
    
}

⌨️ 快捷键说明

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