私は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
*/
}
}