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

📄 mainframe.java

📁 01背包四种算法实现(java版)
💻 JAVA
📖 第 1 页 / 共 3 页
字号:

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
// TODO 将在此处添加您的处理代码:
                                      this.jTextArea1.setText("");
                                    String BagWeight = this.jTextField1.getText();
                                    String BagValuet = this.jTextField2.getText();
                                    String capcity = this.jTextField3.getText();
                                    if (BagWeight != null && BagValuet != null
							&& capcity != null) {
                                        // 物品重量转为整数
						StringTokenizer st = new StringTokenizer(BagWeight);
						ArrayList al = new ArrayList();
						while (st.hasMoreTokens()) {
							Integer integer = new Integer(st.nextToken());
							al.add(integer);
						}
						int weight[] = new int[al.size()];
						for (int i = 0; i < al.size(); i++) {
							Integer temp = (Integer) al.get(i);
							weight[i] = temp.intValue();
						}
                                                
						// 物品价值转为整数
						StringTokenizer st2 = new StringTokenizer(BagValuet);
						ArrayList al2 = new ArrayList();
						while (st2.hasMoreTokens()) {
							Integer integer = new Integer(st2.nextToken());
							al2.add(integer);
						}
						int value[] = new int[al2.size()];
						for (int i = 0; i < al2.size(); i++) {
							Integer temp = (Integer) al2.get(i);
							value[i] = temp.intValue();
						}
                                                // 背包容量转为整数
						int c = new Integer(capcity).intValue();
						// 最大价值及最优解
						int m[][] = new int[weight.length][c + 1];
						int x[] = new int[weight.length];
						// 得到最优值和最优解
                                                
						int MaxV = Greedy_Algorithm.knapasck(c, weight, value, x);
						StringBuffer sb = new StringBuffer();
						Arrays.sort(x);
						for (int k = 0; k < x.length; k++) {
							if (x[k] != 0) {
							
								sb.append("第" + x[k] + "个   ");
							}
						}
                                                this.jLabel15.setText(new Integer(MaxV)
								.toString());
                                                this.jLabel16.setText(sb.toString()); 
                                                StringBuffer avarage = new StringBuffer("物品id      "+"重量  " + "单位价值\n");
                                                for(int i = 0 ; i < Greedy_Algorithm.dd.length ; i ++)
                                                {
                                                    avarage = avarage.append(Greedy_Algorithm.dd[i].tag +"              "+new Integer(Greedy_Algorithm.dd[i].ww).toString()+
                                                            "                          "
                                                            +Greedy_Algorithm.dd[i].wv+"\n");
                                                }
						
                                              
								avarage.append(Greedy_Algorithm.stb);
							
                                                this.jTextArea1.setText(new String(avarage));
                                                
                                    }
        
        
    }//GEN-LAST:event_jButton2ActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO 将在此处添加您的处理代码:
        				
                                      this.jTextArea1.setText("");
                                    String BagWeight = this.jTextField1.getText();
                                    String BagValuet = this.jTextField2.getText();
                                    String capcity = this.jTextField3.getText();
                                    if (BagWeight != null && BagValuet != null
							&& capcity != null) {
                                                 // 物品重量转为整数
						StringTokenizer st = new StringTokenizer(BagWeight);
						ArrayList al = new ArrayList();
						while (st.hasMoreTokens()) {
							Integer integer = new Integer(st.nextToken());
							al.add(integer);
						}
						int weight[] = new int[al.size()];
						for (int i = 0; i < al.size(); i++) {
							Integer temp = (Integer) al.get(i);
							weight[i] = temp.intValue();
						}
                                                
						// 物品价值转为整数
						StringTokenizer st2 = new StringTokenizer(BagValuet);
						ArrayList al2 = new ArrayList();
						while (st2.hasMoreTokens()) {
							Integer integer = new Integer(st2.nextToken());
							al2.add(integer);
						}
						int value[] = new int[al2.size()];
						for (int i = 0; i < al2.size(); i++) {
							Integer temp = (Integer) al2.get(i);
							value[i] = temp.intValue();
						}
                                                // 背包容量转为整数
						int c = new Integer(capcity).intValue();
						// 最大价值及最优解
						int m[][] = new int[weight.length][c + 1];
						int x[] = new int[weight.length];
						// 得到最优值和最优解
                                                Dynamic_Programming.knapsack(value, weight, c, m);
						Dynamic_Programming.traceback(m, weight, c, x);
                                                //算法运行过程:
                                                StringBuffer sbf = new StringBuffer("物品重量id" +
                                                        "           背包剩余容量为下数时的价值\n");
                                                sbf.append("             ");
                                                for(int i = 0 ; i <= c; i++)
                                                {
                                                   
                                                     sbf.append(" "+i); 
                                                }
                                                sbf.append("\n");
                                                for(int i = 0 ; i < weight.length ; i++)
                                                {
                                                    
                                                    int g = i+1;
                                                    sbf.append("物品:"+g+"       ");
                                                    for(int k = 0 ; k <= c ; k++)
                                                    {
                                                       sbf.append(new Integer(m[i][k])+" "); 
                                                    }
                                                    sbf.append("\n");
                                                }
                                                
                                                //显示最大值和最优值
                                                StringBuffer sb = new StringBuffer();
						int MaxV = 0;
                                                int CurrentC =c;
						for (int k = 0; k < x.length; k++) {
							if (x[k] != 0) {
								int t = k+1;
								sb.append("第" + t + "个   ");
								MaxV = MaxV + value[k];
                                                                CurrentC = CurrentC - weight[k];
                                                                sbf.append("选择了第" + t + "个当前价值为"+MaxV+
                                                                        "剩余容量"+ CurrentC);
                                                                 sbf.append("\n");
							}
                                                         
						}
                                                this.jTextArea1.setText(sbf.toString());
                                                this.jLabel13.setText(new Integer(MaxV)
								.toString());
                                                this.jLabel14.setText(sb.toString());
                                    }
        
        
  
					
				
    }//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 MainFrame().setVisible(true);
            }
        });
    }
    
    // 变量声明 - 不进行修改//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    // 变量声明结束//GEN-END:variables
    
}

⌨️ 快捷键说明

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