1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
| Rudolf |
27.10.2006 16:21
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
Задача такая: Из заданного на плоскости множества точек выбрать 3, не лежащих на одной прямой и состовляющих треугольник наименьшей площади.
Как я понимаю плоскость задаем в виде двумерного массива?А что с этим массивом потом делать? |
| Michael_Rybak |
27.10.2006 16:54
Сообщение
#2
|
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Плоскость нет (по-моему) смысла задавать двумерным массивом. Задавать нужно *точки*, а не плоскость. Точки можно задать (одномерным) массивом, каждый элемент - пара (x, y). Или двумя массивами - x[1..n] и y[1..n].
Лобовое решение - тремя вложенными циклами перебрать первую, вторую и третью точки, и выбрать наилучший треугольник. Это будет O(n^3). Решение похитрее - за O(n^2). Расскажу, если кому-то действительно интересно. Может можно и за O(n log n). Но это уже совсем сложно, надо думать. |
| мисс_граффити |
27.10.2006 18:06
Сообщение
#3
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
если границы цикла грамотно установить - оценка чуть получше будет... то есть каждое сочетание проверить один раз. Ведь треугольники из точек с номерами 1,2 и 3 (123, 132, 213, 231, 321, 312) имеют одну и ту же площадь.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
| Michael_Rybak |
27.10.2006 18:11
Сообщение
#4
|
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Это не меняет асимптотики.
|
| мисс_граффити |
27.10.2006 20:16
Сообщение
#5
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
я не спорю.
просто дополнила. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
| Rudolf |
28.10.2006 15:21
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
Вот что смог написать, только ничего не работает
|
| мисс_граффити |
28.10.2006 16:37
Сообщение
#7
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
так... площадь ты пытаешься считать по формуле Герона - логично.
только а,b и c как-то странно находишь длина стороны - это расстояние между двумя точками, а не разность между двумя координатами одной точки... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
| Rudolf |
28.10.2006 16:55
Сообщение
#8
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
Ой!!Точно!Я чего то ступил))
|
| Rudolf |
28.10.2006 17:38
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
А формула для длины отрезка такая sqrt[ (x1-x2)^2 + (y1-y2)^2 ]?Я переделал но все равно ничего не работает
#include <stdio.h> |
| volvo |
28.10.2006 17:46
Сообщение
#10
|
|
Гость |
попробуй вот так:
#include <conio.h> |
| Rudolf |
28.10.2006 17:56
Сообщение
#11
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 51 Пол: Мужской Реальное имя: Владимир Репутация: 0 |
Все работает. Всем большое спасибо за помощь
|
| Michael_Rybak |
28.10.2006 19:19
Сообщение
#12
|
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: 32 |
Площадь, ИМО, лучше все-таки считать векторным произведением:
2s = (x3-x1)*(y2-y1) - (y3-y1)*(x2-x1) |
![]() ![]() |
|
Текстовая версия | 8.12.2025 23:35 |