这是一个艰难的,至少我的最低技能.
基本上,用户将价格列表输入到阵列中,然后输入他想要购买的所需数量的项目,最后是不超过的最大成本.
我需要检查所需数量的项目的组合数量是否小于或等于给定的成本.
如果问题是组合中固定数量的项目,比如3,只需要三个循环选择每个价格并将它们添加到测试中就会容易得多.
我感到难过的地方是要求用户输入任意数量的项目,直到数组中的项目数量.
这是我最初决定的,然后才意识到用户可以指定任意数字的组合,而不仅仅是三个.它是在这里的类似主题的帮助下创建的,但同样只有当用户指定他想要每个组合3个项目时它才有效.否则它不起作用.
// test if any combinations of items can be made for (one = 0; one < (count-2); one++) // count -2 to account for the two other variables { for (two = one + 1; two < (count-1); two++) // count -1 to account for the last variable { for (three = two + 1; three < count; three++) { total = itemCosts[one] + itemCosts[two] + itemCosts[three]; if (total <= funds) { // DEBUG printf("\nMatch found! %d + %d + %d, total: %d.", itemCosts[one], itemCosts[two], itemCosts[three], total); combos++; } } } }
据我所知,根据用户所需的每个组合的项目数量,没有简单的方法可以使其灵活适应.
我真的很感激任何帮助.