配方问题如何计算
有配方原料n种,n是可以统计出来的变量:
原料1 原料1用量%下限 原料1用量%上限 原料1某成分含量
原料2 原料2用量%下限 原料2用量%上限 原料2某成分含量
原料3 原料3用量%下限 原料3用量%上限 原料3某成分含量
…… …… …… ……
原料n 原料n用量%下限 原料n用量%上限 原料n某成分含量
已经 把原料i的用量上限和用量下限分别存入数组 gcanshu[i,1],gcanshu[i,2] ,并假设原料用量%下限和原料用量%上限均是整数,并且增长步长为1
如何写程序,实现从原料1到原料n每种用量的比例情况下计算原料n某成分含量(计算过程就简写为计算即可).
主要是如何写循环。
------解决方案--------------------递归更容易理解吧
假设用一个dictionary<key, result>来保存结果集,key类似于"
------解决方案--------------------n0
------解决方案--------------------n1
------解决方案--------------------n2
------解决方案--------------------n3"(或随便你怎么定义,能表明关系就好),其中的nx表示原料x的比例。
设f(n)为问题,返回结果dictionary<key,result>;calc(gcanshu[n])为计算单个原料n,返回结果dictionary<key,result>
那么
f(0) = calc(0) = 0
f(1) = calc(gcanshu[1])
f(n) = calc(gcanshu[n]) + f(n-1)
所以整个过程可以描述成:
f(n): {
dictionary<key,value> init;
if n == 0 return dictionary;
if n == 1 return calc(gcanshu[n]);
foreach (childpair<key,result> in f(n-1)) {
foreach (pair<key,result> in calc(gcanshu[n])) {
combine(pair<key,result>, childpair<key,result>) -> dictionary<key,value>
}
}
return dictionary;
}
------解决方案--------------------