Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Интересные и занимательные задачи по программированию > Массивы


Автор: kura1 14.11.2008, 02:32
Привет!  smile 
задачка-головоломка
smile  не могу понять алгоритм решения 
Код

даны 2 множества точек на плоскости.из 1 множества выбрать 3 различных точки так, чтобы треугольник с вершинами в  этих точках содержал (строго в нутри себя) равное количество точек 1-го и 2-го множеств!

уйму треугольников нарисовал..  smile пока не пойму..может у вас есть какие-нибудь идеи!? 

понял только то что квадратные матрицы не подходят, только прямоугольные. 

Автор: kura1 16.11.2008, 20:09
ребус не для смертных smile 

Автор: kura1 20.11.2008, 23:49
 smile 

Автор: SoWa 21.11.2008, 08:39
Задача на графах решается. Танцуй от этого

Автор: Silent 23.11.2008, 11:51
Самая первая мысль - полный перебор:
Код

type TPoint=record
       x,y:integer;
     end;
     TArr = array [0..nmax-1] of TPoint;
var a,b:TArr;
    x,y,z:TPoint;
Procedure Init;
begin
//инициализация множеств
end;
Procedure Done;
begin
//вывод решения - точки x,y,z
end;
Function GetCountInside(x:TArr;a,b,c:TPoint):integer;
begin
//возвращает количество точек из множества x,
//лежащих внутри треугольника с вершинами a,b,c
end;
Function Solve:boolean;
var i,j,k:integer
    flag:boolean;
begin
  flag:=true;
  i:=0;
  while (flag)and(i<n) do begin
    j:=i+1;
    while (flag)and(j<n) do begin
      k:=j+1;
      while (flag)and(k<n) do begin
        flag:=GetCountInside(a,a[i],a[j],a[k])<>GetCountInside(b,a[i],a[j],a[k]);
        if flag then inc(k);
      end;
      if flag then inc(j);
    end;
  if flag then inc(i);
  end;
end;
begin
Init;
if Solve then Done
else Write('Решений нет!');
end.

Автор: kura1 5.12.2008, 03:04
Цитата(SoWa @  21.11.2008,  06:39 Найти цитируемый пост)
Задача на графах решается. Танцуй от этого 

графы не знаю smile 

Silent, мысль правильная! а код на СИ++ можно smile ?

Автор: kura1 8.7.2009, 11:26
Silent,  тебе спасибо)

Автор: 2p0i 9.7.2009, 14:39
А в чём прикол? Если вам подходит лобовой алгоритм за O(N^4), то это очень просто пишется.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)