Комбинаторика - C#

  1. Здравствуйте. Помогите решить задачу Перечислить все способы выбора k чисел из множества 1..N. Повторения не допускаются, т.е. способ выбора должен отличаться по составу, а не по порядку следования.


textual

Код к задаче: «Комбинаторика - C#»

 private static void Main(string[] args)
        {
            var arr = new[] { 45, 12, 16, 17, 34 };
            int k = 3;
            var a = new int[k];
            Console.WriteLine("Кол-во сочетаний: {0}", C(arr.Length, k));
            Console.Write("Подмножество {0}: ", 1);
            for (int i = 0; i < k; ++i)
            {
                a[i] = i;
                Console.Write(arr[i] + " ");
            }
            Console.WriteLine();
 
            int t = 1;
            while (NextCombination(a, arr.Length - 1))
            {
                Console.Write("Подмножество {0}: ", ++t);
                for (int i = 0; i < k; ++i)
                    Console.Write(arr[a[i]] + " ");
                Console.WriteLine();
            }
 
            Console.ReadLine();
        }
 
        private static int C(int n, int k)
        {
            if (n < k || n < 1 || k < 1)
                return 0;
            if (n == k)
                return 1;
            if (k == 1)
                return n;
            return C(n - 1, k - 1) + C(n - 1, k);
        }
 
        private static bool NextCombination(int[] a, int n)
        {
            int k = a.Length;
            for (int i = k - 1; i >= 0; --i)
                if (a[i] < n - k + i + 1)
                {
                    ++a[i];
                    for (int j = i + 1; j < k; ++j)
                        a[j] = a[j - 1] + 1;
                    return true;
                }
            return false;
        }

СДЕЛАЙТЕ РЕПОСТ

14   голосов, оценка 4.000 из 5



Похожие ответы
  1. Привет знатокам Сразу скажу - мне нужен хотя бы ручной расчет не говоря о программе, т.к. в программировании я мало понимаю, и скорее всего обратился не в ту тему или даже форум. Заранее извиняюсь Ребят, подскажите как найти оси координаты КУРСОРА если они расположены в обратном направлении, а их центр находится в левом верхнем углу? На скриншоте http://prntscr.com/gnbkw4 я показал так скажем условие которое сделал сам, но для моего мегамозга эта сложная задача.

  1. Код ================== { Entry 1 } Application Name: Google Chrome URL: http://cp.fange.ru/register Username: 123dd Password: 1234qwer ================= { Entry 2 } Application Name: Google Chrome URL: http://mail.ru Username: 123dd Password: 1234qwer ================== { Entry 3 } Application Name: Google Chrome URL: http://cp.ketrawars.net/register Username: 123dd Password: 1234qwer ================== как получить username:password из каждой части тхт

  1. Здравствуйте, я столкнулся с проблемой. Есть программа которая выполняет данные ей команды. Но проблема в том что надо реализовать пользовательские скрипты. Иными словами, есть папка в которой лежат файлы с кодом который программа должна выполнять при соответствующей команде в отдельном процессе. Вариант с запуском готовых .exe отпал сразу. Как я себе представляю: есть код на с#, который программа компилирует и выполняет. Принимаю все варианты и советы. Заранее спасибо!

  1. Доброго времени суток, Господа. Вопрос в следующем. Как мне правильно сделать пересечение друх множеств? Вопросы следующие:1. Хочу найти пересечение двух последовательностей, которые хранят информацию о свойствах двух классов, по имени этих свойств:

  1. Дано равенство, в котором цифры заменены на буквы: rsrx + sru = rutr Найдите сколько у него решений, если различным буквам соответствуют различные цифры. может знаете менее прямолинейное решение?) а то как-то даже выглядит не хорошо.

  1. Приветствую, ребята! Почитал статью Архитектура ПО в WinForms (FAQ & HowTo) , многое теперь стало понят но. Единственное что хотел уточнить. Модель данных - это так сказать "абстрактная штука", с которой уже работают контролы. Либо же это отдельный компонент, в котором можно настроить эту модель данных ? Я вот к чему спросил. Возьмем простой пример, например, рассыльщик писем. От программы требуется рассылать письма с определенным текстом по заданному списку e-mail адресов. Т.е. у нас получается что, на вход мы подаем список адресов, и программа уже работает с ними (шлет письма на адреса). Я так думаю, что моделью данных будет некий класс, в котором будет храниться загруженный список адресов с флажками или полями (отправлен, не отправлен). И уже этот список выводить, например, в DataGrid (нужно его еще как-то прикрутить к источнику модели данных). Раньше бы я тупо загрузил список сразу в DataGrid и обрабатывал уже его, но так не нужно делать

  1. Всем привет! Из своего приложения запускаю стороннюю консольную программу и хочу передать ей строку с параметрами. Перед этим, пользователь через окно обзора выбирает несколько файлов и добавляет их в список, происходит это так:

  1. Добрый день! Имеется задача, которую, к сожалению, пока не могу реализовать: Есть текстовый файл состоящий из множества строк. В нем нужно заменить первое вхождение фразы, удовлетворяющей маске "; день недели(3 символа) число (2 символа) месяц (3 символа) год (4 символа) время (hh:mm:ss) часовой пояс (всегда +0300)" (например,"; Fri, 30 Jun 2017 09:06:53 +0300"), на второе вхождение фразы, удовлетворяющей маске. Остальные фразы не трогать. Фраза всегда начинается с символа ";" и заканчивается на "+0300". Если бы вся фраза всегда располагалась на одной строке, проблем у меня это бы не вызвало. Но фраза может начаться на одной строке, а закончиться на другой. Пример прилагаю.

  1. Всем доброго времени суток. Есть голая форма с label. При наведении мышки на нее MouseEnter Эта label перебирает из массива приветсвия на разных языках. Это вроде работает но как потом выключить этот поток я не могу

  1. Ребят, нужна помощь: У меня на кнопке такой код: