Вывод на экран всех возможных сочетаний элементов матрицы - C#
Формулировка задачи:
Здарова, есть значит матрица любой размерности, например я ввёл r = 3, c =3
Заполнил матрицу, вывел:
А11 Б12 В13
Г21Д22 Е23
Ё31Ж31 З33
нужно вывести все сочетания элементов матрицы в таблицу консольки, всего сочетаний получится r^c, в моём случае 27.
Пример возможных сочетаний :
Варианты сочетаний элементов матрицы:
А11Б12В13 | А11Б12Е23 | А11Б12З33
А11Д22В13 | А11Д22Е23 | А11Д22З33
А11Ж32В13 | А11Ж32Е23 | А11Ж32З33
----------------------------
Г21Б12В13 | Г21Б12Е23 | Г21Б12З33
Г21Д22В13 | Г21Д22Е23 | Г21Д22З33
Г21Ж32В13 | Г21Ж32Е23 | Г21Ж32З33
----------------------------
Ё31Б12В13 | Ё31Б12Е23 | Ё31Б12З33
Ё31Д22В13 | Ё31Д22Е23 | Ё31Д22З33
Ё31Ж32В13 | Ё31Ж32Е23 | Ё31Ж32З33
типа того
Написать такой код, который будет выдавать все сочетания матрицы. При Любых введённых r и c, хотя бы при любых маленьких значений r, c .
Помогайте, чёт не могу сообразить...
Спасибо
string [,] Matrix = new string [r,c];
Решение задачи: «Вывод на экран всех возможных сочетаний элементов матрицы»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
string[] strings = new[]
{
"A11", "Б12", "В13"
};
Permute(strings, Output);
Console.WriteLine();
Console.ReadLine();
}
private static void Output<T>(T[] permutation)
{
foreach (T item in permutation)
{
Console.Write(item);
Console.Write(" ");
}
Console.WriteLine();
}
public static void Permute<T>(T[] items, Action<T[]> output)
{
Permute(items, 0, new T[items.Length], new bool[items.Length], output);
}
private static void Permute<T>(T[] items, int item, T[] permutation, bool[] used, Action<T[]> output)
{
for (int i = 0; i < items.Length; ++i)
{
if (!used[i])
{
used[i] = true;
permutation[item] = items[i];
if (item < (items.Length - 1))
{
Permute(items, item + 1, permutation, used, output);
}
else
{
output(permutation);
}
used[i] = false;
}
}
}
}