AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3802. 硬件产品销售方案

中等通过率 74% · 提交 181 · 通过 134
回溯DFS枚举

小慕正在开发一个智能硬件项目,需要采购多种核心组件来搭建原型。目前市场上可供选择的组件有 N 种,每种组件的库存充足,且每种组件都有唯一的定价,记为 price(不存在价格相同的组件型号)。小慕计划用 amount 元的总预算来采购这些组件,请帮小慕列出所有可能的组件组合方案。 输出按照

提示:带虚线的词点一下有通俗解释。

输入描述

<div data-page-id="PCJ5dveJkoax2yx2vsMcxUNPnUc" data-docx-has-block-data="false"> <div style="white-space-collapse:preserve;" class="ace-line ace-line old-record-id-Tl2tdLJ1OoL4qZxwUKrcfrbdnpg"> 输入包含采购金额 <code>amount</code> 和产品价格列表 <code>price</code>。第一行为 <code>amount</code>,第二行为 <code>price</code>。 </div> </div> <span data-lark-record-data="{"isCut":false,"rootId":"PCJ5dveJkoax2yx2vsMcxUNPnUc","parentId":"PCJ5dveJkoax2yx2vsMcxUNPnUc","blockIds":[6,7],"recordIds":["Tl2tdLJ1OoL4qZxwUKrcfrbdnpg","Mef8dmHvro9eXFxyqqdcp1iYnue"],"recordMap":{"Tl2tdLJ1OoL4qZxwUKrcfrbdnpg":{"id":"Tl2tdLJ1OoL4qZxwUKrcfrbdnpg","snapshot":{"type":"text","parent_id":"PCJ5dveJkoax2yx2vsMcxUNPnUc","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":[],"text":{"initialAttributedTexts":{"text":{"0":"输入包含采购金额 amount 和产品价格列表 price。第一行为 amount,第二行为 price。例如:"},"attribs":{"0":"*0+9*0*1+6*0+9*0*1+5*0+6*0*1+6*0+6*0*1+5*0+4"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]},"nextNum":2}},"align":"","folded":false}},"Mef8dmHvro9eXFxyqqdcp1iYnue":{"id":"Mef8dmHvro9eXFxyqqdcp1iYnue","snapshot":{"type":"heading2","parent_id":"PCJ5dveJkoax2yx2vsMcxUNPnUc","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":[],"text":{"initialAttributedTexts":{"text":{"0":"输出描述"},"attribs":{"0":"*0+4"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"]},"nextNum":1}},"align":"","folded":false}},"PCJ5dveJkoax2yx2vsMcxUNPnUc":{"id":"PCJ5dveJkoax2yx2vsMcxUNPnUc","snapshot":{"type":"page","parent_id":"","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":["doxcn1QksYhuuIGOUqvgwqKgzUe","UBUwd3AdIoaANdxKOrhchpUNnyg","UXDQdyfguoe9yexjYtychtzNnqe","LREWdeTvdoa0lExHb0Kc1xOKnHh","Tl2tdLJ1OoL4qZxwUKrcfrbdnpg","Mef8dmHvro9eXFxyqqdcp1iYnue","UtcddxJzuohGfUxleUHcNBqsnEg","GKwcdfni2oNLMVx4bO2cqbxVnKb","A7j2dSyCcoNV74xhxzccO7xGnEc","TCj0dwSvHoKeVyxAZCrcqs21nsc","R5Xkdd6P5o32hwxJPK6c7bgknBh","KwVqdwacLoQraJxDjQDcEXOzn7c","OF9wdkkgUoTJa1xw4ftcxI57nPd","Ux0tdBzYfopzOsxxjoRcDrD0noe","Ip4udsFmTo5WuDxkQuGcdcQSnMX","SKOndQYpdoRh3xx2iw1cbts9nrf","BZ6fdIfe7o0IiTx0rmDcTzsinkb","GrofdwlHQosQ8KxIbNFcKn4Qnhg","BXYXdAldBoFKVQxTEbXcfzNOnhc","FSyMdJBDFoikPJxlA8DcsIuunid","LYnldBAiAogejAx1Xl4c14RvnXd","YDkcdw0noo1u79xMZJscPVnHn5c","NO03dzmHCoIBzqx2GyCcUIiynBt","GfFNdOhZ6oGiR3xy3YZcR2eGnZe","doxcnF3mywCrXRYAtN7E6MOOBIe","L4xedYlDyoKMlIxhNWgcW7nOnFf","doxcn7XxpOzMq3EjcxNN3MOFlvg","doxcnNvfHWVrvb6tkQBgPX48thf","doxcnZLZZU28OzwdkCXYqyBDoYd","doxcnlW5np9bmEZiYJ749hSbjpQ","doxcnFT7YrpX3jMEkuXhjFu2Ojg","doxcnB2mGZZmtk6NcgTpJDmTb3c","YWlXd7p6xod8Txx5kPacgWi5n7b","VxSrdjzw8oEwYFxmNHccQT3YnB9","P63kdeCeCoMeWVxKkeOcMvuwncf","VmdedTA1goltl0xkj6WccidKnVe","DDfAd27RLobLUDx1TAmczkOknJd","QwR0dYjJyoptBMxh2DUcATMdnbe"],"text":{"apool":{"nextNum":1,"numToAttrib":{"0":["author","7115054903550050305"]}},"initialAttributedTexts":{"attribs":{"0":"*0+j"},"text":{"0":"【回溯】2023Q1-硬件产品销售方案"}}},"align":"","doc_info":{"editors":["7115054903550050305"],"options":["editors","create_time"],"deleted_editors":[]}}}},"payloadMap":{"Tl2tdLJ1OoL4qZxwUKrcfrbdnpg":{"level":1}},"extra":{"mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"selection":[{"id":6,"type":"text","selection":{"start":0,"end":56},"recordId":"Tl2tdLJ1OoL4qZxwUKrcfrbdnpg"},{"id":7,"type":"text","selection":{"start":0,"end":4},"recordId":"Mef8dmHvro9eXFxyqqdcp1iYnue"}],"pasteFlag":"654c570b-cb07-4244-a640-b487f4c16a44"}" data-lark-record-format="docx/record" class="lark-record-clipboard"></span>

输出描述

<div data-page-id="PCJ5dveJkoax2yx2vsMcxUNPnUc" data-docx-has-block-data="false"> <div style="white-space-collapse:preserve;" class="ace-line ace-line old-record-id-UtcddxJzuohGfUxleUHcNBqsnEg"> 输出为组合列表。例如: <code>[[500], [200, 300], [100, 200, 200], [100, 100, 300], [100, 100, 100, 200], [100, 100, 100, 100, 100]]</code> </div> </div> <span data-lark-record-data="{"rootId":"PCJ5dveJkoax2yx2vsMcxUNPnUc","text":{"initialAttributedTexts":{"text":{"0":"输出为组合列表。例如:\n[[500], [200, 300], [100, 200, 200], [100, 100, 300], [100, 100, 100, 200], [100, 100, 100, 100, 100]]"},"attribs":{"0":"*0|1+c*0*1+2u"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]},"nextNum":2}},"type":"text","referenceRecordMap":{},"extra":{"mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":8,"type":"text","selection":{"start":0,"end":114},"recordId":"UtcddxJzuohGfUxleUHcNBqsnEg"}],"payloadMap":{},"isCut":false}" data-lark-record-format="docx/text" class="lark-record-clipboard"></span>

示例

示例 1

输入

500
100, 200, 300, 500

输出

[[100, 100, 100, 100, 100], [100, 100, 100, 200], [100, 100, 300], [100, 200, 200], [200, 300], [500]]

示例 2

输入

100
100

输出

[[100]]

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
回溯法:硬件产品销售方案 剩余500 -100 剩400 -200 剩300 -300 剩200 -500 剩0 -100 剩300 -200 剩200 -300 剩100 -100 剩100 -100 剩0 ✓ 每个节点: 当前剩余金额 边:减去某个价格 剩余0时得到一个组合 回溯:尝试所有可能 最终输出所有组合
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「硬件产品销售方案」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。