我有 90 个列表,列表中的每个元素都是 600 的 int 数组。现在我想在这个列表上执行排列(而不是在 int 数组上),即我想获得这个 90 个元素列表的所有可能的唯一组合,总之90!列表。
我正在使用kwCombinatorics
图书馆。
这是代码。
在第一个 foreach 语句中抛出此异常,
ArgumentOutOfRangeException
-
值大于允许的最大值。
foreach(var row in new Permutation(image_matrix_90_600.Count).GetRows())
{
foreach(var mix in Permutation.Permute(row, image_matrix_90_600))
{
// code for saving the individual list to text.
}
}
她是来自http://kwcombinatorics.codeplex.com/的例子
using Kw.Combinatorics;
using System;
using System.Collections.Generic;
namespace Kw.CombinatoricsExamples
{
public class Furniture
{
private string name;
public Furniture (string newName) { name = newName; }
public override string ToString () { return name; }
}
public class Fruit
{
private string name;
public Fruit (string newName) { name = newName; }
public override string ToString () { return name; }
}
class PnExample03
{
static void Main ()
{
var things = new List<object>
{
new Fruit ("apple"),
new Furniture ("bench"),
new Furniture ("chair")
};
// Use permutations to get rearrangements of other objects:
foreach (var row in new Permutation (things.Count).GetRows())
{
foreach (var mix in Permutation.Permute (row, things))
Console.Write ("{0} ", mix);
Console.WriteLine ();
}
}
/* Output:
apple bench chair
apple chair bench
bench apple chair
bench chair apple
chair apple bench
chair bench apple
*/
}
}