0

この質問が数学のセクションに対するものなのか、このセクションに対するものなのかはわかりませんが、(.NET で) プログラムによる解決策が必要なので、ここに質問を置きます。

以下の例に示すように出力する可変長の配列があります。

int[] arr = {1,2} の場合、次のようになります。

[1、2]、[1]、[2]

int[] arr = {1,2,3} の場合、次のようになります。

[1、2]、[2、3]、[3、1]、[1]、[2]、[3]、[1、2、3]

int[] arr = {1,2,3,4} の場合、次のようになります

[1、2]、[2、3]、[3、4]、[4、1]、[1]、[2]、[3]、[4]、[1,2,3]、[2 ,3,4]、[3,4,1]、[4,1,2]、[1,2,3,4]

for int[] arr = {1,2,3,4,5} .....

これでパターンが見えてくると思います

これをプログラムで解決する方法、または誰もが考えることができる関連する数式がある場合は、ポインタやヒントはありますか?

ありがとう、

4

1 に答える 1

2

プログラムとしてはかなりダメだと思いますし、演習としても自分でやらないとダメだと思います。しかし、私は皆が求めるものを与えます...

int[] arr = new int[] { 1, 2, 3 };

// How much elements in each permutation
for (int i = 1; i <= arr.Length; i++)
{
    // Starting point of the permutation
    for (int j = 0; j < arr.Length; j++)
    {
        Console.Write("[");

        // Single element of the permutation
        for (int k = 0; k < i; k++)
        {
            if (k != 0)
            {
                Console.Write(", ");
            }

            Console.Write("{0}", arr[(j + k) % arr.Length]);
        }

        Console.WriteLine("]");

        // Single cycle for last permutation of length arr.Length
        if (i == arr.Length)
        {
            break;
        }
    }
}
于 2013-08-06T07:57:40.173 に答える