2

返信ありがとうございます。まず、私を助けようとしてくれたことに感謝したいと思います。これをいくつかのウェブサイトに投稿しましたが、誰も助けようとしていません。

私のコードでは、私がしたいのは順列カウントです。

上から下に数えます
1,2,3
1,2,3
1,2,3

output to
111 = 1
112 = 1
113 = 1
121 = 1
122 = 1
123 = 1
133 = 1
211 = 1
212 = 1
213 = 1
333 = 1

すべての数がカウントされるまで続行し、最終的にカウントされる数を確認できる配列に格納します

コードは入力番号をチェックし、結果の数を数え、結果と結果の数を表示し、それぞれが順列カウント後にいくつあるかを示します。

するのは難しいですか?

とにかく助けてくれてありがとう。

4

1 に答える 1

1

それほど難しいことではないと思います。それは単なる標準的な順列です。少し再帰を使用する必要があります。

function permute(size) {
    var range = getRange(size);
    var result = [];
    getSubPerms('', range, result);
    return result;
};

function getRange(size) {
    var range = [];
    for (var i = 0; i < size; i++) {
        range.push(i + 1);
    }
    return range;
}

function getSubPerms(perm, range, result) {
    for (var i = 0; i < range.length; i++) {
        var perm2 = perm + range[i];
        if (perm2.length == range.length) {
            result.push(perm2);
        } else {
            getSubPerms(perm2, range, result);
        }
    }
}

var foo = permute(4); //an array of all of your results.
alert(foo.length); //256

ただし、結果を生成する必要がなく、その長さにのみ関心がある場合は、結果Math.pow(size, size)の長さを取得するだけです。

于 2012-11-27T05:01:29.943 に答える