我从来没有太多的数学,我希望有人可以帮我解决以下问题.
我有5盒:
1 2 3 4 5
[ ] [ ] [ ] [ ] [ ]
Run Code Online (Sandbox Code Playgroud)
盒子可以是白色,灰色或黑色(或者把它想象为0,1,2)
盒子可以装入多少种可能状态?
什么是伪代码(或任何语言)来产生所有可能的结果?
即...
00000
00001
00011
00111
Run Code Online (Sandbox Code Playgroud)
等等......
我非常感谢任何人都可以帮助我.
z *_* - 7
组合数量的答案是:3x3x3x3x3(3 ^ 5),因为每个盒子可以有3种可能的颜色.
至于生成结果,看看是否可以使用此矩阵用0,1或2来表示结果,以表示框的颜色.在较小的范围内(假设3盒),它看起来像这样:
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
0 2 1
0 2 2
1 0 0
1 0 1
1 0 2
1 1 0
1 1 1
1 1 2
1 2 0
1 2 1
1 2 2
2 0 0
2 0 1
2 0 2
2 1 0
2 1 1
2 1 2
2 2 0
2 2 1
2 2 2
Run Code Online (Sandbox Code Playgroud)
这是一个经典的排列生成问题.每个职位有3种可能性,5个职位.生成的字符串总数为3 ^ 5 = 243.如果需要通用解决方案,则需要递归(简单的迭代循环仅适用于单个问题实例).
这是一个简单的例子:
public static void Main(string[] args){
Generate("", 5);
}
private void Generate(string s, int limit)
{
if (s.Length == limit)
Console.WriteLine(s);
else
{
Generate(s+"0", limit);
Generate(s+"1", limit);
Generate(s+"2", limit);
}
}
Run Code Online (Sandbox Code Playgroud)
要回答你的第一个问题,如果方框只能包含两个值中的一个,答案是什么?那么,如果框中包含三个值中的一个,那么答案是什么?
为了回答你的第二个问题,什么伪代码会产生一个盒子的所有可能结果?现在,伪代码会产生两个盒子的所有可能结果吗?