1

私は数学にあまり興味がなかったので、誰かが次のことで私を助けてくれることを願っています.

私は5つの箱を持っています:

 1   2   3   4   5
[ ] [ ] [ ] [ ] [ ]

ボックスは、白、灰色、または黒のいずれかです (または、0、1、2 と考えてください)。

ボックス セットが取り得る状態はいくつありますか?

考えられるすべての結果を生成する疑似コード (または任意の言語) は何ですか??

つまり...

00000
00001
00011
00111

などなど…

誰かが私にこれを手伝ってくれることに本当に感謝しています。

4

15 に答える 15

8

組み合わせの数の答えは、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
于 2009-01-15T18:02:26.373 に答える
6

これは古典的な置換生成問題です。各ポジションに 3 つの可能性があり、5 つのポジションがあります。生成された文字列の総数は 3^5 = 243 です。一般的な解決策が必要な場合は、再帰が必要です (単純な反復ループは、問題の 1 つのインスタンスに対してのみ機能します)。

簡単な例を次に示します。

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);
    }
}
于 2009-01-15T18:04:29.380 に答える
5

最初の質問に答えるために、ボックスに 2 つの値のうちの 1 つだけを含めることができるとしたら、答えは何になりますか? では、ボックスに 3 つの値のいずれかが含まれている場合、答えは何でしょうか?

2 番目の質問に答えるには、1 つのボックスのすべての可能な結果を​​生成する疑似コードはどれですか? 疑似コードは、2 つのボックスのすべての可能な結果を​​生成しますか?

于 2009-01-15T17:59:43.400 に答える
3

最初に紙の上で問題を解くことをお勧めします。より少ない数のボックス (おそらく 3 つ) で解決してみて、すべての可能性を列挙してください。次に、あなたの推論がどのように行われたか、またはあなたがしたことを小さな子供にどのように説明するかを考えてください.

于 2009-01-15T18:00:00.780 に答える
1

これは宿題の問題のようです。解決策については、少しだけお手伝いします。

あなたが言っているのは、各ボックスには 3 つの状態があり、それらはすべて独立しているということです。1 つのボックスには 3 つの解があり、2 つのボックスには 3 * 3 の解があります。最初のボックスの各状態に対して、2 番目のボックスにも 3 つの状態があります。それを5箱に拡張します。

各ソリューションを生成するには、それを循環するだけです。ボックスごとにネストされた for ループを作成するのは簡単で、10 の累乗を掛けると、数値を一度に表示できます。

同様の方法で、複数のボックスのコードを一般化できます。

于 2009-01-15T17:59:14.477 に答える
1

少なくとも実際に私に答えてくれた皆さん、ありがとうございます。

質問がコンピュータ サイエンスの 101 からそのまま出てきたように聞こえたことは理解できますが、そうではありませんでした。皮肉なことに、それは本当の締め切りのある実生活のためのものであり、私がこのようなことを教えられていたときのことを聞く時間がなく、「いつこのがらくたが必要になるのか」と自問しました。

ひいきにされて男子生徒のように扱われたいなら、小学校に戻って 5 年生の先生にトイレに行ってもいいですかと尋ねます。

再度、感謝します

于 2009-01-16T16:31:16.193 に答える
0

これに答えるためのコードを書こうとさえしないでください!その理由は、それを計算するためにいくつかの非常に大きな数(階乗)が必要になるためです。これらは、CLRのどの基本タイプよりもはるかに大きな数値を作成します。このオープンソースライブラリを使用して計算を行うことができます。

于 2009-01-15T18:56:05.283 に答える
0

あなたの問題は、組み合わせ論における積の法則以上のものを必要としません。

最初の箱の状態は 3 通り、 2 番目の箱の状態は 3 通り、そして 5 番目の箱の状態は 3 通りの状態を選択できます。すべてのボックスの状態を設定できるウェイの数は、ウェイの 5 つの (等しい) 数すべての積、つまり 3x3x3x3x3 = 3 5です。

同様の質問: 5 桁の 10 進法で、先頭のゼロを数えて、いくつの数を形成できますか? つまり、00000 から 99999 までの数字はいくつありますか? 最初の桁を 10 とおりの方法 (0...9) で選ぶことができ、それ以降も同様で、答えは 10x10x10x10x10 = 100000 です。

于 2009-01-15T23:32:42.463 に答える
0

これが私が最初にこれを行うことを学んだ方法です: まず、あなたがどれだけ多くの選択をしているのかを考えてください. 各ボックスに 1 つずつ、合計 5 つの選択を行っています。したがって、乗算記号を含む 5 つの空白行を書き留めます。

__ x __ x __ x __ x __ = ?

各空欄に、そのボックスで選択するオブジェクトの数を書きます。各ボックスには 3 つの数字から選択できるので、すべての空欄に 3 を書き込みます。

3 x 3 x 3 x 3 x 3 = 243

これにより、それらの選択肢の順列の総数が得られます。

于 2009-01-15T18:16:15.660 に答える
0

これについて何がわからないのか、何がつまずいているのか聞いてもいいですか?ここにいる全員が質問に単純に答えているように見えますが、答えをコピーした場合、何も学んでおらず、宿題の要点を完全に逃しています。次のレッスンがこのレッスンに基づいていると仮定すると、さらに後れを取ることになります。

あなたが私の下で働いているか、私のクラスにいた場合、私は単に次のように尋ねます...

「その問題はどのように解決されるべきだと思いますか?」どこでハングアップしているかがわかるかもしれません。CMU の私の賢明な教授はかつて、「理解できないことを理解するまで、これを理解する手助けをすることはできない」と言いました。自分。

おそらく手遅れであることはわかっていますが、これらの宿題の質問については、単に答えを提供して宿題をするのではなく、その人の学習を支援する必要があると本当に思います.

于 2009-01-15T18:18:34.017 に答える
0

組み合わせの一意の数: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
}
于 2009-01-15T18:03:19.587 に答える
0

ヒント: 各ボックスが数字の位置であり、各色が異なる数字であると想像してください。現実の世界では、2 つの位置と 10 桁の組み合わせで、いくつの組み合わせ (0 を含む) が得られますか? 3 ポジションはどうですか?使用可能な桁数が与えられた場合、桁数を追加することと組み合わせの数との関係はどうなりますか?

于 2009-01-15T18:01:09.543 に答える
0
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);
    }
}
于 2017-01-06T11:25:06.910 に答える
0

可能性の数は 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
于 2009-01-15T17:58:53.510 に答える
0

状態の数は 3^5 です。

擬似コードは

for value from 0 to 3^5-1
    print base3(value)

ここで、base3 はモジュロ 3 を繰り返し使用して数字を取得し、その数字を (3 で割って) 削除する関数です。

于 2009-01-15T17:59:26.223 に答える