问题描述
我不太了解那些 N/NP 问题,所以我可能会问 100 万美元问题的答案,希望不会。
现实生活中的例子:我想计算我可以做多少顿饭:
{
chickenBurger: {
amount: 1,ingredients: {
tomato: {
amount: 2
},buns: {
amount: 1
},ketchup: {
amount: 1
},friedChicken: {
amount: 2,ingredients: {
chickenStrip: {
amount: 1,},breadcrumbs: {
amount: 1,}
}
}
},friedChicken: {
amount: 1,ingredients: {
chickenStrip: {
amount: 1,breadcrumbs: {
amount: 1,}
},ketchup: {
amount: 1,chickenStrip: {
amount: 1,}
}
现在的一个大问题是,同一种成分可以多次使用,但不仅如此,甚至可以在多个级别和多个子树中使用。
但真正使问题复杂化的是,我可以直接获得一件物品,或者我可以用可用的原料制作它。
如果某些成分是“兄弟”(在不同的树中),则很难以最佳方式分配它们。
我试图构建上面的例子来演示一些问题:
- 用餐时直接需要炸鸡,还有鸡肉汉堡包
- 炸鸡的配料,这顿饭也直接需要鸡条
如果我有:
- 鸡肉汉堡:1
- 番茄:4
- 馒头:1
- 番茄酱:4
- 炸鸡:3
- 鸡条:4
- 面包屑:2
我可以做一顿固定的,因为所有的材料都是直接可用的,所以我只剩下:
- 鸡肉汉堡:0
- 番茄:4
- 馒头:1
- 番茄酱:3
- 炸鸡:2
- 鸡条:3
- 面包屑:2
现在是困难的部分。人类用这么大的数据计算很容易,但编写脚本却很复杂。
为了再做一顿饭,我又需要一个鸡肉汉堡、一个炸鸡、鸡条和番茄酱。如何不按照我目前正在做的方式分配成分(手动减去成分,直到我无法构建一个)?
如果我做一个鸡肉汉堡,我只剩下:
- 鸡肉汉堡:1
- 番茄:2
- 馒头:0
- 番茄酱:2
- 炸鸡:0
- 鸡条:3
- 面包屑:2
然后因为我没有炸鸡了,我必须做一个。如果我这样做了,我就剩下:
- 鸡肉汉堡:1
- 番茄:2
- 馒头:0
- 番茄酱:1
- 炸鸡:1
- 鸡条:2
- 面包屑:1
然后如果我用鸡肉条吃完这顿饭,我最后会剩下:
- 鸡肉汉堡:1
- 番茄:2
- 馒头:0
- 番茄酱:1
- 炸鸡:1
- 鸡条:1
- 面包屑:1
因为如果我将这些成分转换成一顿饭,我会剩下 0 番茄酱,没有进一步检查我可以说我将无法做更多的饭菜,因为番茄酱是核心成分,不能制作。
我想在树上从上到下,反之亦然,收集整体所需的成分,仅计算核心成分,然后将可用的相加,但由于分布,它们都不是最佳的。
到目前为止,我最好的拍摄实际上就是我在上面所做的,一个接一个,然后使用第一个直接可用的项目构建目标项目。但是如果可以制作很多目标物品,就会出现问题。
我觉得必须有一个很好的解决方案,我就是想不通。有人有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)