我从来没有去过太多的数学,我希望有人能帮助我以下。

我有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盒。

要生成的各溶液,可以只是通过它循环。这很容易使嵌套为每盒循环,并通过10乘以权力可以让你展现数一次。

可以概括为多个框的代码以类似的方式。

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);
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top