jso2322, На будущее - указывайте весь текст ошибки в вопросе. Большинство посетителей тут не будут тратить время и вникать в весь ваш код, чтобы догадаться, а что там может быть за ошибка. Тут случай тривиальный, но будь он чуть-чуть посложнее, вы бы остались без ответов.
jso2322, Компилятор вам что-то пишет, рядом со строчкой. Там какое-то сообщение об ошибке. Вот его надо привести.
Пдозреваю, что первое сообщение говорит что-то про отсутствие конструктора по умолчанию для Ball. А второе - про неизвестный идентификатор M_PI, но это не точно.
artyom7777, Я так и не понял, какой код вы хотели.
Если вам надо перестановки вывести, то только сам вывод будет работать за O(n*n!). Алгоритм Нарайаны имеет такую же сложность. Т.е. он не медленнее вывода. Даже если вы найдете какой-то супер-пупер квантовый нереально быстрый алгоритм генерации перестановок, в лучшем случае вы ускорите вашу программу в 2-3 раза.
artyom7777, Не понял ваш вопрос.
Самый простой способ - генерировать следующую лексикографически перестановку.
Кажется, есть способы менять местами только 2 соседних элемента и все-равно получить все перестановки без повторений. Обобщение этого метода на перестановки с повторениями мне неизвестны. Возможно, оно даже существует, но будет сильно сложнее предложенного мной алгоритма.
Пусть точка, которая должна остаться на месте x0, y0 (в координатах картинки). Центр масштабирования, где она должна быть - xc,yc (это экранные координаты). Новые коэффициенты растяжения V и H.
Тогда новый сдвиг будет:
dx = xc - x0*V
dy = yc - y0*H.
Координаты точки x0, y0 можно пересчитать из прошлых коэффициентов масштабирования и сдвигов: решите уравнения выше относительно неизвестных x0 и y0.
Пройдитесь дебаггером, или хоть отладочный вывод добавьте.
Особо ошибки в коде не вижу. Возможно во вводе вершины с 1 пронумерованы и у вас выход за границы массива.
Вообще, если программа вдруг ничего не выводит, значит, скорее всего, падает. Указателей у вас в программе нет, значит падать может только выход за границы массива.
cheston, если там выход за границы массива, то ошибки в питоне не будет, он легко выделит еще одну запись в массиве. Это как вместо vector использовать unordered_map. А вот в c++ - это ошибка.
Вячеслав, и чем это по вашему поможет? Ввод может падать в c++ только если читать в не свою память. Локальные переменные выделены на стеке и этой проблемы точно лишены.
cheston, нет, оно падает где-то до ввода. Скорее всего вы в buildtree портите память. И там даже перестановка мест слагаемых может кардинально поменять наблюдаемое поведение программы.