//需求:用户操作界面需一定量货币,该货币只能通过货币商品购买
// 货币商品有多种,每种代表增加的货币数不同。
//该函数可以生成 符合目标数量的最小商品组合数。
// total 目标值
// 商品可增加货币数列表
// 商品列表index和数量 字典。
// 递归下标
private void NeedCostShopInfo(int total, List<int> quantityList, Dictionary<int, int> dic, int index = 0)
{
int count = quantityList[index];
if (total >= count)
{
if (total % count == 0)
{
dic.Add(index, (int)total / count);
}
else
{
int remainCount = total - count * ((int)total / count);
if (index == quantityList.Count - 1)
{
dic.Add(index, (int)total / count + 1);
return;
}
dic.Add(index, (int)total / count);
index++;
NeedCostShopInfo(remainCount, quantityList, dic, index);
}
}
else
{
if (index == quantityList.Count - 1)
{
dic.Add(index, (int)total / count + 1);
return;
}
index++;
NeedCostShopInfo(total, quantityList, dic, index);
}
}
对于需要来说还是有点复杂,记录一下