Генерация всех сочетаний элементов массива - 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();
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы