小红准备买一些零件来组装电脑。已知电脑一共有个零件,每个零件有若干个型号。小红现在知道了每个型号的对应价格以及性能。小红需要每个零件选择一个型号,在总价格不超过元的前提下,最终的总性能尽可能大。你能帮帮她吗?
区块链毕设网qklbishe.com为您提供问题的解答
小红准备买一些零件来组装电脑。已知电脑一共有个零件,每个零件有若干个型号。小红现在知道了每个型号的对应价格
以及性能
。小红需要每个零件选择一个型号,在总价格不超过
元的前提下,最终的总性能尽可能大。你能帮帮她吗?
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value.split(" ").map(Number); let n, x, data; void (async function () { [n, x] = await readline(); data = new Array(n); for (let i = 0; i < n; ++i) data[i] = { m: (await readline())[0], a: await readline(), // price v: await readline(), // performance }; console.log(Math.max(dfs([]), -1)); })(); function dfs(stat) { if (stat.length == n) return accum(perform(stat)); const ans = []; for (let i = 0; i < data[stat.length].m; ++i) if (accum(price([...stat, i])) <= x) ans.push(dfs([...stat, i])); return Math.max(...ans); } function price(stat) { return stat.map((v, i) => data[i].a[v]); } function perform(stat) { return stat.map((v, i) => data[i].v[v]); } function accum(arr) { return arr.reduce((a, b) => a + b, 0); }
编辑于 今天 14:21:00
以上就是关于问题小红准备买一些零件来组装电脑。已知电脑一共有个零件,每个零件有若干个型号。小红现在知道了每个型号的对应价格以及性能。小红需要每个零件选择一个型号,在总价格不超过元的前提下,最终的总性能尽可能大。你能帮帮她吗?的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训