我正在尝试用70个问题来计算测试的可能结果。他们都是bo ..如何做到这一点以及必须完成多少计算。
答案 0 :(得分:2)
好吧,如果你需要运行70个真/假值的每个组合,那就是大约2 ^ 70 = 1.18e21 = 1.18性别组合。如果你可以在每个时钟周期完成一个,那么3 GHz的4核机器需要3000年才能计算出所有解决方案。如果你在0.1毫米厚的纸张上打印每个结果,每页50行,那叠纸就会超过一万亿英里(你可能会想到一英里高的纸叠超过1600万张纸的事实,重达72吨,可以生产1000多棵树。
我会重新考虑分析这个问题的方法。
答案 1 :(得分:0)
您可能希望在循环或递归中执行此操作。
必须完成 2 70 计算的顺序,考虑到可能的测试数量。
如果你不关心个别路径,或者只是 70 。
答案 2 :(得分:0)
如果你的意思是想要获得真实的bool数量,假设它们存储在数组中,则循环遍历它们。
int score = 0;
for(int c = 0; c < boolArray.Length; c++)
{
if(boolArray[c])
{
score++;
}
}
// (Now you have the score)
我不确定这个确切的代码是否有效,因为我对c#不太熟悉,但你应该明白这一点。
如果你的意思是你想要测试可以给你的所有可能性,它的2 ^ 70 (2因为bool只有两个值,70因为有70个bool)。
答案 3 :(得分:0)
嗯,每个结果都可以是真或假,所以共有2 ^ 70个结果。 (非常多!)
如果您真的想要枚举所有结果,可以执行以下操作:
IEnumerable<IEnumerable<bool>> EnumerateResults()
{
var curr = new List<bool>();
for (var idx = 0; idx < 3; idx++) curr.Add(false);
while (!curr.All(v => v))
{
var idx = 0;
// add one with carry
while (curr[idx]) // no index OOB, because of while condition
{
curr[idx] = false;
idx++;
}
curr[idx] = true;
yield return new List<bool>(curr); // clone
}
}
答案 4 :(得分:0)
答案很简单。你正在处理一个N大小的二进制数。例如,4个问题测试,有16种可能性
0000 0001 0010 0011
0100 0101 0110 0111
1000 1001 1010 1011
1100 1101 1110 1111
对于N,它只是2 ^ N