脚本宝典收集整理的这篇文章主要介绍了201971010233-潘晴 实验二 个人项目—《0-1背包问题》项目报告,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
项目 | 内容 |
---|---|
课程班级博客链接 | 2019级卓越工程师班 |
这个作业要求链接 | 实验二 软件工程个人项目 |
我的课程学习目标 | 1.掌握软件项目个人开发流程2.掌握Github发布软件项目的操作方法 |
这个作业在哪些方面帮助我实现学习目标 | 1.对PSP有了一定的了解和掌握2.熟悉了Java语言的开发步骤3.复习回顾了0-1背包问题算法 |
Github仓库链接地址 | 仓库地址 |
作者的博文内容排版清晰,布局美观,提出的问题有自己的想法和见解,且方向不同,确实引人思考。
作者博文排布格式美观整齐,博文内容充实,对于软件工程学习提出的问题确实值得让人思考,希望作者在未来的学习过程中可以对这些问题有更好的解答和理解。
博文排版主次分明,内容清楚充实,对于课程提出的问题也有自己的思考角度,期待博主更好的文章!
Planning | 计划 | ||
Development | 开发 | ||
Reporting | 报告 | ||
背包问题(Knapsack Problem,KP)是NP Complete问题,也是一个经典的组合优化问题,有着广泛而重要的应用背景。{0-1}背包问题({0-1 }Knapsack Problem,{0-1}KP)是最基本的KP问题形式,它的一般描述为:从若干具有价值系数与重量系数的物品(或项)中,选择若干个装入一个具有载重限制的背包,如何选择才能使装入物品的重量系数之和在不超过背包载重前提下价值系数之和达到最大?
try{
//通过文件路径来创建文件实例
fis = new FileInputStream(file);
//把FileInputStream实例传递到 BufferedInputStream
bis = new BufferedInputStream(fis);
//available检查是不是读到了文件末尾
while( bis.available() > 0 ){
System.out.print((char)bis.read());
}
}catch(FileNotFoundException fnfe)
{
System.out.println("文件不存在" + fnfe);
}
catch(IOException ioe)
{
System.out.println("I/O 错误: " + ioe);
}
int h = getHeight();//重量
int w = getWidth();//价值
g2.draw(new Line2D.Double(PAD, w-PAD, h-PAD, w-PAD));// 横坐标
g2.draw(new Line2D.Double(PAD, PAD, PAD, w-PAD));// 纵坐标
double xInc = (double)(w - 2*PAD)/(data.length-1);
double scale = (double)(h - 2*PAD)/getMax();
// 数据点(坐标)
g2.setPaint(Color.blue);//点的颜色
for(int i = 0; i < data.length; i++) {
double x = PAD + i*xInc;
double y = h - PAD - scale*data[i];
g2.fill(new Ellipse2D.Double(x-2, y-2, 4, 4));
//冒泡排序
double tmp;
for (int a= 1; a < ratio.length; a++) {
for (int j = 0; j < ratio.length-1; j++) {
if(ratio[j] < ratio[j+1]){
tmp = ratio[j];
ratio[j] = ratio[j+1];
ratio[j+1] = tmp;
}
}
}
//创建二维数组
//v[i][j]表示在前i个物品中能够装入容量为j的背包中的最大价值
int[][] v=new int[n+1][m+1];
//存放记录数组
int[][] path=new int[n+1][m+1];
//初始化第一行第一列(已经处理了,因为默认是0)
//根据公式来动态规划处理
for (int i = 1; i < v.length; i++) {
for (int j = 1; j < v[0].length; j++) {
//公式
if(w[i-1]>j){
v[i][j]=v[i-1][j];
}else{
//v[i][j]=Math.max(v[i-1][j],val[i-1]+v[i-1][j-w[i-1]]);
if(v[i-1][j]<val[i-1]+v[i-1][j-w[i-1]]){
v[i][j]=val[i-1]+v[i-1][j-w[i-1]];
path[i][j]=1;
}else{
v[i][j]=v[i-1][j];
}
}
}
}
此次项目的完成效果并不是太理想,在算法选择设计上存在问题,会继续尝试解决。此次花费时间最长的部分,也是PSP中实际完成时间和预计完成时间差异最大的部分就是在代码编写部分,因为对Java语言的不熟练,遗忘,在编写代码的时候问题重重,今后也会加强自己的编程能力,多写代码,多加练习。会继续尝试解决。项目的完成过程是充实有意义的,通过{0-1}背包问题软件的开发,将以前学过的知识重新回顾,重新拾起应用,在一点点解决问题中重新学习。
以上是脚本宝典为你收集整理的201971010233-潘晴 实验二 个人项目—《0-1背包问题》项目报告全部内容,希望文章能够帮你解决201971010233-潘晴 实验二 个人项目—《0-1背包问题》项目报告所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。