关注
来个java版的 全ac的背包
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); int money = sc.nextInt(); List<Integer> list = new ArrayList<>(); while (sc.hasNext()) {
list.add(sc.nextInt()); } int[] cost = new int[list.size() / 2]; int[] earn = new int[list.size() / 2]; int[] chosen = new int[list.size() / 2]; for (int i = 0; i < list.size(); ++i) { if (i < list.size() / 2) {
cost[i] = list.get(i); chosen[i] = 0; } else {
earn[i - list.size() / 2] = list.get(i); }
} // d[i][j]表示前i个物品放入容量为j的背包的最大价值 // d[i][j] = max(d[i-1][j], d[i-1][j-weights[i]] + values[i]) int[][] d = new int[cost.length][money + 1]; for (int i = 0; i < d.length; ++i) { for (int j = 1; j < money + 1; ++j) { if (i == 0) { if (cost[i] <= j) {
d[i][j] = cost[i]; }
} else { if (j >= cost[i]) {
d[i][j] = Math.max(d[i - 1][j], d[i - 1][j - cost[i]] + earn[i]); } else {
d[i][j] = d[i - 1][j]; }
}
}
} int ii = cost.length - 1, jj = money; while (ii >= 0) { if (ii > 0) { if (jj-cost[ii] >= 0 && d[ii][jj] == d[ii - 1][jj - cost[ii]] + earn[ii]) {
chosen[ii] = 1; jj -= cost[ii]; }
} else { if (cost[ii] <= jj) {
chosen[ii] = 1; }
}
ii--; } boolean first = true; for (int i = 0; i < chosen.length; ++i) { if (chosen[i] == 1) { if (first) {
System.out.print(i + 1); first = false; } else {
System.out.print(" " + (i + 1)); }
}
}
}
查看原帖
点赞 评论
相关推荐
01-04 20:58
淮北师范大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 哪些公司开春招了? #
11913次浏览 123人参与
# 牛客十周岁生日快乐 #
206373次浏览 1922人参与
# 上班以后,你还有哪些坚持的爱好? #
8079次浏览 185人参与
# 四大天坑是哪四家? #
101258次浏览 235人参与
# 你最近因为什么迷茫? #
36360次浏览 583人参与
# 如果工作一直消耗情绪还要继续做吗 #
18032次浏览 82人参与
# 一人一个landing小技巧 #
142944次浏览 1497人参与
# 互联网公司评价 #
479453次浏览 4087人参与
# 你觉得什么岗位会被AI替代 #
34780次浏览 230人参与
# 我和mentor的爱恨情仇 #
101536次浏览 919人参与
# 聊聊你的被动加班经历 #
3839次浏览 72人参与
# 找工作以来,你最看不惯__ #
16654次浏览 333人参与
# 工作压力大怎么缓解 #
138544次浏览 1252人参与
# AI coding的好用工具分享 #
20514次浏览 399人参与
# 实习离职怎么跟领导说 #
76092次浏览 432人参与
# 实习教会我的事 #
51990次浏览 408人参与
# 实习怎么做才有更好的产出 #
13364次浏览 240人参与
# 百度工作体验 #
302367次浏览 2219人参与
# 百度求职进展汇总 #
653975次浏览 6275人参与
# 你今年的保底offer是哪家 #
164528次浏览 701人参与
