Генерация всех сочетаний элементов массива - C#
Формулировка задачи:
Всем здравствуйте, существует массив в котором все буквы английского, как большие так и маленькие, и 10 цифр от 0 до 9. Получается массив из 62 элементов. Необходимо сгенерировать все возможные сочетания элементов массива длиной от 6 до 15 символов... и желательно результат сохранить в текстовый файл...
Всем заранее огромное спасибо, желательно писать с небольшими комментариями, т.к. я новичок.
Решение задачи: «Генерация всех сочетаний элементов массива»
textual
Листинг программы
- using System.IO;
- using System;
- using System.Text;
- namespace ConsoleApplicationTest
- {
- internal class Program
- {
- public static void Main(string[] args)
- {
- char[] arAlphabet = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; // используемый алфавит
- int n = 6; // количество мест в комбинации
- char[] arBuffer = new char[n];
- const string fileName = "ResultGenerate.txt";
- // файл при каждом запуске должен создаваться заново
- StreamWriter writer = File.CreateText(fileName);
- writer.Close();
- // Накопитель строк.
- StringBuilder stringBuilder = new StringBuilder((int) Math.Pow(arAlphabet.Length, n)* (n+2));
- RecursionGenerateCombinationsToFile(arAlphabet, arBuffer, 0, stringBuilder);
- // Записываем полученный результат в файл.
- writer = File.AppendText(fileName);
- writer.Write(stringBuilder.ToString());
- writer.Close();
- }
- private static void RecursionGenerateCombinationsToFile(char[] arAlphabet, char[] arBuffer, int order,
- StringBuilder stringBuilder)
- {
- if (order < arBuffer.Length)
- for (int i = 0; i < arAlphabet.Length; i++)
- {
- arBuffer[order] = arAlphabet[i];
- RecursionGenerateCombinationsToFile(arAlphabet, arBuffer, order + 1, stringBuilder);
- }
- else
- {
- for (int i = 0; i < arBuffer.Length; i++)
- stringBuilder.Append(arBuffer[i]);
- stringBuilder.AppendLine();
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д