📄 mainframe.java
字号:
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 + -