C# 硬币兑换问题-需要额外的禁品
我试图用两个额外的约束条件来改变硬币兑换问题 附加约束#1-硬币只能有2^N的值,其中N=0,1,2。。或任何其他非负整数 附加约束#2-从约束1开始,同一枚硬币最多只能使用2次 到目前为止,我所做的是:- 一,。生成适用于我们希望达到的总和的值列表,其中 对于6,我将生成一个包含[1,2,4]的列表C# 硬币兑换问题-需要额外的禁品,c#,dynamic,structure,knapsack-problem,C#,Dynamic,Structure,Knapsack Problem,我试图用两个额外的约束条件来改变硬币兑换问题 附加约束#1-硬币只能有2^N的值,其中N=0,1,2。。或任何其他非负整数 附加约束#2-从约束1开始,同一枚硬币最多只能使用2次 到目前为止,我所做的是:- 一,。生成适用于我们希望达到的总和的值列表,其中 对于6,我将生成一个包含[1,2,4]的列表 生成一个列表,其中包含您可以使用特定硬币多少次的值,根据约束条件#2,对于所有情况,这将是2,因此 [1,2,4]的[2,2,2] 我不确定如何组合这两个列表以获得预期的输出。到目前为止,我得到的
static int Ways(List<int> coins, List<int> coins_used, int sum)
{
int[] no_of_ways = new int[sum + 1];
results[0] = 1;
for (int i = 0; i < coins.Count; i++)
for (int times = 0; times < coins_used[i]; times++) // I want to make sure that we use one value only up to 2 times
for (int j = coins[i]; j <= sum; j++)
no_of_ways[j] += no_of_ways[j - times*coins[i]];
return no_of_ways[sum];
}
静态整数方式(列出硬币、列出使用的硬币、整数和)
{
int[]no_of_ways=新的int[sum+1];
结果[0]=1;
对于(int i=0;i