用.net 写一个二维数组排列组合的算法
时间: 2023-09-24 19:11:39 浏览: 68
实现组合排列的算法。
以下是用 C# 语言编写的一个简单的二维数组排列组合算法:
```csharp
using System;
namespace ArrayPermutations
{
class Program
{
static void Main(string[] args)
{
int[,] array = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
int[] indices = new int[array.GetLength(0)];
Permute(array, indices, 0);
}
static void Permute(int[,] array, int[] indices, int level)
{
if (level == array.GetLength(0))
{
// Print the permutation
for (int i = 0; i < indices.Length; i++)
{
Console.Write(array[indices[i], 0] + ", " + array[indices[i], 1] + " ");
}
Console.WriteLine();
}
else
{
for (int i = 0; i < array.GetLength(0); i++)
{
if (Array.IndexOf(indices, i) == -1)
{
indices[level] = i;
Permute(array, indices, level + 1);
}
}
}
}
}
}
```
这个算法使用了递归来生成所有可能的排列组合。在 `Permute` 函数中,`array` 参数是要排列组合的二维数组,`indices` 参数是已经选择的行的索引数组,`level` 参数是已经选择了多少行。
首先,在 `Permute` 函数中,如果 `level` 等于数组的行数,就说明已经选择了所有的行,可以打印出这个排列组合。否则,就遍历所有的行,如果这一行还没有被选择,就把它加入到 `indices` 数组中,并递归调用 `Permute` 函数,继续选择下一行。当所有的可能性都被尝试过后,这个函数就结束了。
阅读全文