Помогите с задачей на C++

01.01.2001

помогите с задачей на C++
Из заданного на плоскости множества точек выбрать такие три, которые составляют треугольник наибольшего периметра .
вот не знаю как правильно реализовать программу, по какому алгоритму, понимаю как нужно сделать в принципе, а как в проге нет

  • Алгоритм-то простой: для каждой тройки точек сравниваешь периметр треугольника с текущим максимальным периметром и если периметр тройки больше, то перезаписываешь текущий максимальный. В итоге получится максимальный периметр.

    double p, p_max=0.0;
    int p_max_i, p_max_j, p_max_k;
    for(int i=0; i < n-2; i++)
      for(int j=i+1; j < n-1; j++)
        for(int k=j+1; k < n; k++)
          if((p=perimetr(i,j,k)) > p_max) { p_max=p; p_max_i=i; p_max_j=j; p_max_k=k; }
        
        

  • Самый простой вариант - перебираете все точки по очереди.
  • ну как организовывать - это от алгоритма программы зависит. тут, наверное, стоит какой-нить динамический список организовать из структур. в структуре будет четыре поля: в первых трех - координаты точек, в четверной вычисленный периметр. из структуры с наибольшим периметром и берешь координаты точек.

Вас заинтересует