题
我从来没有去过太多的数学,我希望有人能帮助我以下。
我有5盒:
1 2 3 4 5
[ ] [ ] [ ] [ ] [ ]
的框可以是白色,灰色或黑色(或把它作为0,1,2)
多少个可能的状态可以在套装是?
什么是伪代码(或以任何语言),以产生所有可能结果??
...即
00000
00001
00011
00111
等,等...
我真的很感激任何帮助,任何人都可以给我这个问题。
解决方案
这是一个典型的置换生成问题。你有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);
}
}
其他提示
有关的组合的数量的答案是: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
要回答你的第一个问题,将答案是什么,如果箱子可能只包含两个值中的一个?所以,答案是什么,如果框包含三个值中的一个?
要回答你的第二个问题,什么伪代码生成一个框的所有可能的结果?现在,伪代码生成两盒所有可能结果?
我建议你先解决在纸面上的问题。尝试用更小一些箱子(也许三)解决它,并列出所有的可能性。然后,想想你的推理是如何去了,或者你会如何解释你做一个小的孩子什么。
感谢大家的答案,至少那些你究竟是谁给了我一个。
虽然我明白,这个问题听起来就像是直接拉出计算机科学101的,事实并非如此。事情的讽刺意味的是,这是现实生活中的一个真正的最后期限,我没有时间去倾听回来时,我被教导这些东西,对自己说,“我什么时候永远会需要这个垃圾”
如果我想光顾,并像一所学校的男孩,我会回到我上小学了,问我五年级的老师,如果我的处理可以的去洗手间
再次感谢
状态的数量为3 ^ 5。
伪代码
for value from 0 to 3^5-1
print base3(value)
其中base3是反复取模3以获得一个数字的功能,然后删除该数字(除以3)
提示:想象每个盒子在许多位置和每种颜色是不同的数字。在现实世界中,有多少组合(包括零)你有2位和10位可能得到?怎么样3个位置?给你提供的数字位数什么是增加额外的位置和组合数之间的关系,?
的组合唯一的编号:3^5=243
代码:
n = 0
for i = 0 to 3^5-1
{
s = ""
for j = 1 to 5
{
d = n mod 3
s = toascii(d) . s
n = n / 3
}
println s
i = i + 1
}
下面是我第一次了解到这样做:先想想你有多少选择决策。您正在五种选择,每一个盒子。所以写上下五个空白行与乘法迹象:
__ x __ x __ x __ x __ = ?
在每个空白,写上你有从该框中选择对象的数量。既然你有3个数字,从每个框中选择,你写在3的每一个的空白:
3 x 3 x 3 x 3 x 3 = 243
此给你的排列对于这些选择的总数。
的可能性的数目是3至电力5
如果你从循环0到数减1,并表示它在基座3,你将有一切准备(记住前面加上0必要时)
在红宝石:
number_of_possibilities = 3**5-1
for i in (0..number_of_possibilities)
base_3_number = i.to_s(3)
puts "%05d" % base_3_number # number formatting used to prepend 0s where necessary
end
我可以问你不明白这个是什么或什么绊倒你吗?我看到大家坐在这里简单地回答了这个问题,但如果你已经复制了他们的答案,你什么也没学到从而彻底无缘作业的意义。假设你的下一课在这一个版本,你只是要再跌落后。
如果你要么为我工作或者是在我的课我会简单地问下面...
“您如何看待这个问题应该得到解决?”这个问题的答案可能揭示在那里你要挂了。我的在CMU聪明的教授曾经说:“我不能帮你了解这一点,直到你知道你不明白”我从来没有弄清楚什么我不明白,我放弃了他的班,但坚持与教训我
我知道它可能为时已晚,但对于这些功课的问题,我真的认为我们应该帮助的人学习,而不是简单地提供一个答案和做功课他们。
您的问题需要不外乎规则。
您可以选择的第一的箱的有3种方式的状态,而第二的有3种方式盒的状态,和......和的状态有3种方式5箱。的,可以在其中设置的所有框的状态的方式的数目是所有五个(相等)的方式编号,即3x3x3x3x3 = 3 5
的产物类似的问题:你有多少个号码可以用5位数字在十进制系统,计数前导零形成的?也就是说,有多少数字是有00000至99999?您可以选择在10种(0 ... 9)的第一个数字,等等等等,答案是10x10x10x10x10 = 100000,因为你已经知道了。
这似乎是一个家庭作业的问题。我只是给你一些帮助,以再解决。
你所说的是,每一个盒有三种状态,它们都是独立的。一个框将有3个解决方案,以及两个箱将有3级* 3的解决方案 - 为第一箱的每个状态的第二个框将有三种状态为好。延伸,为5盒。
要生成的各溶液,可以只是通过它循环。这很容易使嵌套为每盒循环,并通过10乘以权力可以让你展现数一次。
可以概括为多个框的代码以类似的方式。
甚至不要尝试编写代码来回答这个问题!其原因是,你需要一些非常大的数字(阶乘)来计算。这些创造比CLR任何基本类型更大的数字。您可以使用此开源库做计算。
void solve(int p=0,int n=5,int d=0)
{
if (n==p)
{
int rev=d;
int i=0;
while (i<5) {
cout << rev%10;
rev /= 10;
i++;## Heading ##
}
cout << endl;
return;
}
for(int i=0; i<3 ; i++)
{
solve(p+1,n, d*10 + i);
}
}