南阳OJ 的背包问题
题目链接 http://acm.nyist.net/JudgeOnline/problem.php?pid=106
背包问题
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。
输入
第一行输入一个正整数n(1<=n<=5),表示有n组测试数据;
随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10);s表示有s个物品。接下来的s行每行有两个正整数v,w。
输出
输出每组测试数据中背包内的物品的价值和,每次输出占一行。
样例输入
1
3 15
5 10
2 8
3 9
样例输出
65
来源
[苗栋栋]原创
上传者
苗栋栋
我运行的没有问题 ,但是提交编译就出问题 ,看了提示的信息 , 也不明白说的什么
谁有时间的帮我看看么 .
,
代码如下 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Goods implements Comparable{
int per;
int count;
//按照降序
@Override
public int compareTo(Object o1) {
Goods o = (Goods)o1;
if(this.per > o.per){
return -1;
}else if(this.per == o.per){
return 0;
}else{
return 1;
}
}
}
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(reader.readLine());
List<Goods> list = new ArrayList<Goods>();
while((N--)!=0){
String str[] = reader.readLine().split(" ");
int n = Integer.parseInt(str[0]);
int weight = Integer.parseInt(str[1]);
while((n--)!=0){
Goods good = new Goods();
str = reader.readLine().split(" ");
good.per = Integer.parseInt(str[0]);
good.count = Integer.parseInt(str[1]);
list.add(good);
}
//开始排序
Collections.sort(list);
//开始计算
int count = 0;
int add_weight = 0;
for(int i=0;i<list.size();i++){
if(list.get(i).count <=(weight-add_weight)){
count+= list.get(i).per * list.get(i).count;
add_weight+=list.get(i).count;
}else{
count+= list.get(i).per * (weight-add_weight);
add_weight += (weight-add_weight);
}
if(add_weight >= weight){
break;
}
}
System.out.println(count);
}
reader.close();
}
}
...全文
相关推荐
南阳理工oj离线题库
南阳理工oj离线题库
南阳理工oj stl练习ac代码
南阳理工学院stl练习场全部ac代码!
基于Laravel 5.0的OJ题解网站 , 目前涵盖安科OJ,南阳OJ,杭电OJ ,北大OJ,浙大OJ.zip
基于Laravel 5.0的OJ题解网站 , 目前涵盖安科OJ,南阳OJ,杭电OJ ,北大OJ,浙大OJ.zip
南阳理工学院OJ_个人AC代码包(Java提交)
南阳理工学院OJ_个人AC代码包(Java提交) 是Java初学者登堂入室的很好例子。
iOJ - 基于Laravel 5.0的OJ题解网站 , 目前涵盖安科OJ,南阳OJ,杭电OJ ,北大OJ,浙大OJ等,
iOJ - 基于Laravel 5.0的OJ题解网站 , 目前涵盖安科OJ,南阳OJ,杭电OJ ,北大OJ,浙大OJ等, 巜Java Web》课程设计.zip


Java SE
