我不确定这个问题是用于数学部分还是这个部分,但我需要一个编程解决方案(在.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,4,1,1,2,3,4,2,2,2,3,4,4,4,4,1,2,1,2,3,4
int[] arr = {1,2,3,4,5}
我想你现在应该能看到模式了
任何指针或提示如何以编程方式解决这一问题,或者如果有相关的数学公式,任何人都可以想到吗?
谢谢,
发布于 2013-08-06 07:57:40
我认为它作为一个程序是非常无用的,作为一个练习,如果你不自己做,那么它是无用的。但我给了每个人他们要求的..。
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;
}
}
}https://stackoverflow.com/questions/18073770
复制相似问题