贪心算法背包问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计与分析实验报告
题目:贪心算法背包问题
专业:JA V A技术xx——xxx班
学号:
姓名:
指导老师:
实验三:贪心算法背包问题
一、实验目的与要求
1、掌握背包问题的算法
2、初步掌握贪心算法
二、实验题:
问题描述:与0-1背包问题相似,给定n种物品和一个背包。物品i的重量是wi,其价值为vi,背包的容量为c。与0-1背包问题不同的是,在选择物品i装入背包时,背包问题的解决可以选择物品i的一部分,而不一定要全部装入背包,1< i < n。
三、实验代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class er extends JFrame {
private static final long serialVersionUID = -1508220487443708466L;
private static final int width = 360;// 面板的宽度
private static final int height = 300;// 面板的高度
public int M;
public int[] w;
public int[] p;
public int length;
er() {
// 初始Frame参数设置
this.setTitle("贪心算法");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(width, height);
Container c = getContentPane();
c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
setLocation(350, 150);
// 声明一些字体样式
Font topF1 = new Font("宋体", Font.BOLD, 28);
Font black15 = new Font("宋体", Font.PLAIN, 20);
Font bold10 = new Font("宋体", Font.BOLD, 15);
// 声明工具栏及属性设置
JPanel barPanel = new JPanel();
JMenuBar topBar = new JMenuBar();
topBar.setLocation(1, 1);
barPanel.add(topBar);
// 面板1和顶部标签属性设置
JPanel p1 = new JPanel();
JLabel topLabel = new JLabel("背包问题");
topLabel.setForeground(Color.blue);
topLabel.setFont(topF1);
p1.add(topLabel);
// 中间面板和标签及输入框属性设置
JPanel p2 = new JPanel();
p2.setLayout(new BoxLayout(p2, BoxLayout.Y_AXIS)); JLabel wLabel = new JLabel("请输入重量:");
JLabel pLabel = new JLabel("请输入效益:");
wLabel.setFont(black15);
pLabel.setFont(black15);
//
final JTextField wText = new JTextField(8);
final JTextField pText = new JTextField(8);
// wText.setText("10,8,7,5,9,6");
// pText.setText("15,14,7,10,17,7");
p2.add(wLabel);
p2.add(wText);
p2.add(pLabel);
p2.add(pText);
//
// 中下部面板和标签属性设置
JPanel p3 = new JPanel();
JLabel bottomLabel = new JLabel(
" 注意:数据输入时请添加分割符','"); bottomLabel.setFont(bold10);
bottomLabel.setForeground(Color.red);
bottomLabel.setHorizontalAlignment(SwingConstants.RIGHT); p3.add(bottomLabel);
//
JPanel p5 = new JPanel();
p5.setLayout(new BoxLayout(p5, BoxLayout.Y_AXIS)); JLabel mLabel = new JLabel("请输入背包总重量:"); mLabel.setFont(black15);
final JTextField mText = new JTextField(8);
p5.add(mLabel);
p5.add(mText);
// 面板和按钮的设置
JPanel p4 = new JPanel();
JButton submit = new JButton("确定");
submit.addActionListener(new ActionListener() {