有配方原料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某成分含量(计算过程就简写为计算即可).
主要是如何写循环。
配方原料,成分计算
原料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某成分含量(计算过程就简写为计算即可).
主要是如何写循环。
配方原料,成分计算
那么
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;
}
public static int[,] gcanshu = new int[nMAX, 3]
{
{0,2,3},
{0,3,4},
{0,2,8},
{0,3,10},
}; public static void Count(int no)
{
if (no >= nMAX)
{
for (int i = 0; i < nMAX; i++)
{
Console.Write(gcanshu[i, 0]);
Console.Write(",");
}
Console.WriteLine();
return;
} for (int i = gcanshu[no, 1]; i <= gcanshu[no, 2]; i++)
{
gcanshu[no, 0] = i;
Count(no+1);
}
} public static void Main()
{
Count(0);
Console.ReadKey();
}