Алексей Дубровин, правильная формула количества чисел тут - n!/(n0!n1!...n9!), где n - длина числа ni - количество цифр i.
Вычитанием вы правильную формулу не получите.
aldexnotproger, Еще добавлю, что не надо для этого знать размер массива во время компиляции. Все, что надо сделать, это выделить память на стеке. Вообще говоря, обычно память под все локальные переменные выделяется в начале функции, но ничего не мешает делать это в середине. Там могут быть сложности с адресацией переменных, и в особо сложных случаях всегда можно выделить память в куче.
Оценки всегда симметричные, как у вас в примере (weight(idX,idY) = weight(idY,idX))?
Как набор весов преобразуется в оценку конкретного расположения элементов? Как понять, что одно расположение лучше другого? Т.е. например, можно разместить id0 с id1 на расстоянии 4, а с id10 на расстоянии 10, а можно id1 на расстоянии 5, а id10 на расстоянии 8. Как понять, что лучше?
Например, можно умножать расстояние между интересующимеся друг другом id-шниками на веса, суммировать это все и минимиировать. Можно домножать на квадраты расстояний, можно веса возводить в степень расстояния, можно давать штраф, если расстояние больше заданного порога... Куча вариантов и все дадут разные решения.
У вас фиксированная функция оценки, или можно взять любую более менее логичную, что дает самый простой алгоритм?
У задачи есть какой-то физический смысл? Может ее возможно свести к чему-то более простому - дайте изначальную задачу.
Davidaa_WoW, Вот функции findMax И findLenght - не работают. Вы туда передаете список ребер из одной вершины. Каким образом они могут найти расстояние в графе, имея лишь список соседей одной вершины - загадка. Что делает findMax я понять не могу, но findLength - выдает индекс заданной вершины в списке. Совершенно бесполезное для вашей задачи действие.
Я вам уже привел ссылки на алгоритмы поиска растояний в графе. Флойд в матрице сразу найдет расстояния от всех вершин до всех, его можно запустить прямо в finddiameter. Дейкстра ищет пути от одной вершины до всех, поэтому его надо вставить в findMax.
ashot_powershot, Наверно, надо выводить несколько символов? Поскольку их может быть сколько угодно, то это надо делать в цикле, да? Может, у вас уже есть цикл в программе, куда это можно добавить?
logan baby, Т.е. вам надо проверить, что строка является корректной записью ip-адреса в десетичной системе?
Нет, такой функции, похоже, нет. Это валидация ввода и она слишком спецефична для каждой задачи.
Можно попробовать из строки прочитать 4 числа, разделенных точками и проверить, что каждое из них от 0 до 255.
Дмитрий, поиск пути будет работать, если у вас всегда есть перекрытие по всем словам, кроме одного, и надо обязательно использовать все фразы по ровно одному разу. Это будет задача о эйлеровом пути.
Дмитрий, сформулируйте свою задачу максимально точно, указав все требования, ограничения и возможные пределы значений. Тогда я смогу вам подсказать конкретный алгоритм.
Дмитрий, Нет, если можно пересекать отрезки, то это гораздо более сложная задача.
Что касается эстетической сочетемости соседних блоков - то вам надо придумать метрику. Формальный способ сказать, какая из комбинаций более эстетичная. В самом простом случае - у вас будет матрица штрафа за расположение двух заданных плиток рядом и в решении надо общую сумму штрафа минимизировать.
То, что каждую монету надо хоть раз взять - ну вы просто из всей длины вычтите длины всех "монет" по одному разу, а дальше ограничения уже и нет.
Скорее всего, ваша задача решается динамическим программированием, как и задача о размене монет.
Уточните задачу. В задачи про цепи маркова есть набор отрезков, даны правила, как их можно накладывать друг на друга и надо набрать определенную длину. К тому же надо и спользовать все блоки. Во второй задаче, судя по условию, отрезки нельзя пересекать и надо лишь набрать заданную длину. Ничего не сказано про обязательность использования всех отрезков.
Это принципиально разные задачи. Сформулируйте конкретно, что за задача у вас, и вам, возможно, смогут помочь.
Пока первая задача звучит как упаковка строк, а вторая - как задача о рюкзаке или размена сдачи монетами.
Армянское Радио, Слышали. Я вам сразу сказал, что вы не правы, но вы продолжили гнуть свою линию. Все мои комментарии вам - лишь ответ на ваши комментарии.
под много мог скрываться и миллиард. А так, всего-то сто штук.
Для NP-полной задачи - 100 штук уже много, ибо любое решение так или иначе экспоненциально. Ну, если вы, конечно, доказали P=NP (с помощтю метода K-means с хитрой метрикой) - то напишите статью, получите несколько премий в миллион долларов и войдете в историю.