под наилучшим имею ввиду результат с наименьшим отклонением от цели,
Ну вот, допустим надо набрать (10%, 20%, 30%). Есть варианты набрать (12%, 18%, 32%) или (11%, 19%, 35%). Какой лучше и почему?
Ответ многомерный, там порядка нет, поэтму слова " наименьшие отклонение" не имеют смысла. Вот если вы добавите какую-то метрику. то станет однозначно. Можно, например, сумму квадратов отклонений считать. Или максимальное отклонение. Или количество идеальных совпадений.
наилучшим (допускается приближенное решение) образом
Что значит "наилучшим образом"? Может можнго подобрать все кроме одного ингредиента идеально, а остальной вообще не так. Или можно все чуть-чуть с откланениями набрать. Какой вариант лучше и почему?
Если есть точное решение, то это будет решением простой системы линейных уравнений : представьте, что вы берете x_i i-ого товара по весу. Тогда составьте уравнения - ингредиента ото всех товаров по весу столько же, соклько должно быть в общем весе всех взятых товаров. Плюс еще уравнение, что сумма всех весов равна 1, потому что любое решение можно отмасштабировать, просто взяв всех товаров чуть меньше или больше.
Ну и там еще нужны условия, что все переменные неотрицательны.
Если точного решения нет, то там какая-то задача оптимизации. Какая именно, и как ее решать - зависит от того, что вы считаете "наилучшим" образом.
Jeff_Parker, Сергей Сергей, Так-то можно оценить минимальное количество кликов, нужное для этого. Но на самом деле количество кликов может быть сколь угодно большое. Нужна вам такая оценка? Там будет муторно и много математики. Лень расписывать, если не надо.
Сергей Сергей, Если данные округлены - то вы никак не можете знать уже. Если данные просто выводятся округленные, а в таблице есть более точное значение, ну так домножте все числа на 10^7 и возьмите знаменатели 10^9. Но если они действительно округлены, то вы уже никак знать не можете. Может там 1e-7 прибавляется - и тогда внезапно знаменатель никак не сократить и НОК будет все 10^9.
marshmallow, Alexandroppolus,
Динамическое программирование позволило бы быстрее подсчитать сколько таких множеств есть или проверить, а есть ли они вообще. Раз в задаче надо их сами вывести, то задача решается только полным перебором. С помощью ДП его можно ускорить, но не во всех случаях, поэтому заморачиваться смысла нет.
Сумма внешних углов может быть больше 360. У квадрата там 1080
Вот те углы между векторми сторон, которые в сумме дают 360, вот они у такого угла в 0 градусов будут 180. Еще досаточно остается для второго такого же угла.
Проблема тут не в углах, ведь вполне можно представить себе 2-угольник из двух совпадающих сторон, а в определении. Просто тупо накладывающиеся друг на друга стороны противоречат определению многоугольника. Потому что это бесполезная конструкция. Внутренности у нее нет, только граница.
soja, ну раз на стурктуру преподаватель не ругался, то вроде правильно. Хотя правила и требования у каждого преподавателя свои. Может вашему надо, чтобы стрелочки везде были. Или цвета надо особые делать у разных типов блоков.
Артём Сединин, @nagayev
Ну тут не надо dfs вообще. Зачем стек наматывать, если можно просто циклом пройтись, если помнить соседнюю вершину.
p = trunk_base # вершина из которой растет черенок
v = <next vertex> # соседняя вершина к p вдоль цикла
while power[v] != 3:
for n in G[v]:
if n != p:
v = n
p = v
break
Аналогично можно пройтись по всем вершинам в черенке.
Марат Нагаев Дайте уж лучше ссылку на условие. Пока ничего не понятно. Как считаются награды? Собрать все? Или они численные и суммируются? Какие ограничения? Сколько вершин, сколько ребер сколько наград, ребра все одинаковой длины или разной? Есть ли отрицательные ребра в графе? Граф вообще ориентированный или нет? Может он дерево? Что важнее: кратчайший путь из A в конец, или собрать все награды? Ведь ради наград придется делать крюки и удлинять путь.
Разные ответы на эти вопросы делают задачу принципиально разной. Где-то сработает дейкстра, где-то может сработать динамическое программирование, а где-то только полный перебор или какая-то дичь вроде метода отжига.
Ketchuuuup, не обязательно даже виртуальные методы.
Просто класс наследник должен переопределять метод. Если при этом хотите его как указатель на родительский класс использовать, то да, придется использовать виртуальные методы.
И вы вообще уверены, что у вас ваш пример работает. Запускать пробовали?
Ну вот, допустим надо набрать (10%, 20%, 30%). Есть варианты набрать (12%, 18%, 32%) или (11%, 19%, 35%). Какой лучше и почему?
Ответ многомерный, там порядка нет, поэтму слова " наименьшие отклонение" не имеют смысла. Вот если вы добавите какую-то метрику. то станет однозначно. Можно, например, сумму квадратов отклонений считать. Или максимальное отклонение. Или количество идеальных совпадений.