Articles of алгоритм

Определить лексикографическое расстояние между двумя целыми числами

Скажем, у нас есть целые числа лексикографий 3,5,6,9,10,12 or 0011,0101,0110,1001,1010,1100 Каждый с двумя установленными битами. Я хочу найти расстояние (сколько лексикографических перестановок между ними, не делая подстановочных перестановок) между словами 3 и 5 используя как можно меньше операций. Таблица расстояний следующая 3->5 = 1 or 0011->0101 = 0001 3->6 = 2 or 0011->0110 = 0010 […]

Как я могу упростить этот рабочий двоичный код поиска в C?

Эй, ребята, начали программировать в C несколько недель назад, узнав об альготиримах, просто задаваясь вопросом, как бы вы сделали мой код более простым, просто как бинарная функция поиска. Но единственное, что вы должны оставить аргументы одинаковыми, спасибо заранее. bool search(int value, int values[], int n) { int min = values[0]; int max = values[n-1]; int […]

Египетские фракции в C

Древние египтяне использовали только фракции формы 1/n поэтому любая другая фракция должна была быть представлена ​​в виде суммы таких единичных фракций и, кроме того, все единичные фракции были разными! Какой хороший способ сделать какую-либо фракцию египетской фракцией (чем меньше сумм лучше) в C или java, какой алгоритм можно использовать, ветвь и связанная, a *? например: […]

Генератор кода для выражений с использованием алгоритма Сети-Ульмана

Дайте дерево AST , я хочу сгенерировать язык, похожий на сборку. Я пытаюсь использовать алгоритм Sethi-Ullman , но у меня есть некоторые вопросы в реализации алгоритма. Что мне делать, когда заканчиваются регистры? в настоящее время я делаю следующее: Извлечь push REG где REG – регистр правого поддерева, оценить левое поддерево, получить один свободный регистр, назначить […]

Эффективно имитировать прокатки взвешенных кубиков (или перемещение взвешенного графика), с частыми обновлениями

У меня есть взвешенный, направленный граф, который плотный с около 20 000 узлов. Учитывая узел на графике, я выбираю смежный узел случайным образом с вероятностью, связанной с относительными весами. После каждого выбора я получаю обратную связь о том, был ли выбор хорошим или плохим, и обновить сеть. Например, после плохого выбора я уменьшаю вес всех […]

Подсчитайте количество вхождений 0 в целых числах от 1 до N

Как вы будете эффективно подсчитывать количество вхождений 0 в десятичном представлении целых чисел от 1 до N? eg The number of 0’s from 1 to 105 is 16. How? 10,20,30,40,50,60,70,80,90,100,101,102,103,104,105 Подсчитайте количество 0, и вы найдете 16. Очевидно, что подход грубой силы не будет оценен. Вы должны придумать подход, который не зависит от «Сколько чисел […]

Поиск отсутствующих элементов в массиве

Учитывая, что у вас есть массив A [1..n] размера n, он содержит элементы из набора {1..n}. Однако два элемента отсутствуют, (и, возможно, два из элементов массива повторяются). Найдите недостающие элементы. Например, если n = 5, A может быть A [5] = {1,2,1,3,2}; и поэтому отсутствующие элементы {4,5} Подход, который я использовал, был: int flag[n] = […]

Выполнение последовательности Langford Haskell или C

В комбинаторной математике спаривание Лангфорда , также называемое последовательностью Лэнгфорда, представляет собой перестановку последовательности 2n чисел 1, 1, 2, 2, …, n, n, в которой эти две единицы разделены на единицу, два две единицы разделены на две единицы, и, как правило, две копии каждого числа k составляют k единиц. Например: Спаривание Лэнгфорда при n = […]

Сортировка связанных списков в C

Мне было предложено написать функцию, которая принимает 3 несортированных связанных списков и возвращает один отдельный отсортированный список, который объединяет все три списка. Каков наилучший способ, о котором вы можете думать? У меня нет ограничений памяти, но что бы вы сделали с ограничениями памяти без ограничений?

Преобразование максимальной кучи в двоичное дерево поиска

Нам дается массив из 2 м – 1 различных сопоставимых элементов, индексированных начиная с 1. Мы можем рассматривать массив как полное двоичное дерево: Node is placed at index i. Left child is placed at 2i. Right child is placed at 2i+1. Например, массив [7 6 4 5 2 3 1] это дерево 7 / \ […]