|
|
|
|
|
|
|
Вернуться
| 1 Roland, 29 ноября 2009 г. 18:37:40 | |
|
Аааааа....понятно..я центр симметрии неправильно находил(( спасибо)))
|
|
|
| 2 Делюкин Максим Викторович, 29 ноября 2009 г. 16:14:33 | |
С - решение. Считываем все точки. Находим центр симметрии С как среднее арифметическое всех точек. Далее для каждой точки i находим вектор Ai C, тоесть вектор, при отложении которого из вершины Ai переходим в центр симметрии С (вектор находится вычитанием координат С из координат Аi). Попутно вместе с нахождением этого вектора проделываем следующую операцию. Заводим массив, где будем черкать точки. Если вектор Ai C равен (0, 0, 0), то точку вычеркиваем ( u[i] = 0 ), иначе её не вычеркиваем ( u[i] = 1 ). Очевидно, что среди всех оставшихся точек симметричность относительно центра будет выполняться, если для каждого вектороа найдется противоположный по знаку. После этого я сделал два вложенных цикла, в котором для каждой невычеркнутого вектора (точки) искал невычеркнутый ранее вектор (точку), чтобы выполнялась система { v[i].x = -v[j].x , v[i].y = -v[j].y , v[i].z = -v[j].z }. При нахождении точки (вектора) i и j вычеркивались и поиск продолжался для следующей точки внешнего цикла (break). Думаю, что можно было бы отсоритровать массив вектороы по x, y и z и проверить центральную симметрию массива. В таком случае алгоритм становится линейным вместо моего квадратичного. Но моё решение уложилось по времени.
|
|
|
| 3 Нагин Сергей Юрьевич, 29 ноября 2009 г. 13:48:33 | |
|
Я не так делал....
|
|
|
| 4 Roland, 29 ноября 2009 г. 13:47:48 | |
сначала сортирую по х нахожу центр симметрии далее случаи: если n нечетно и центр симметрии не совпадает со средней точкой моего массива точек то вывожу No а иначе проверяю чтоб все точки были симметричны относительно этого центра что-то не так?
|
|
|
| 5 Нагин Сергей Юрьевич, 29 ноября 2009 г. 13:39:45 | |
|
А ты как делаешь?
|
|
|
Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!
| | | |