В чём ошибка в программе?
type
bool=array[1..2000] of boolean;
var
n,i,p,k:integer;
x,y:array[1..2000] of extended;
nb:bool;
min:extended;
Function Check(nb:bool; n:integer):integer;
var
l,j,s:integer;
Begin
Check:=-1;
For l:=1 to n do
If nb[l]=False then
Begin
j:=j+1;
s:=l;
End;
If j=1 then
Begin
Check:=s;
p:=s;
End;
End;
Begin
ReadLn(n);
For i:=1 to n do
Read(x[n],y[n]);
For i:=2 to n do
If min>Sqrt(Sqr(x[1]-x[i])+Sqr(y[1]-y[i])) then
Begin
min:=Sqrt(Sqr(x[1]-x[i])+Sqr(y[1]-y[i]));
k:=i;
End;
nb[k]:=True;
Repeat
For i:=1 to n do
If nb[i]=False then
Begin
If min>Sqrt(Sqr(x[k+1]-x[i])+Sqr(y[k+1]-y[i])) then
Begin
min:=Sqrt(Sqr(x[k+1]-x[i])+Sqr(y[k+1]-y[i]));
k:=i;
End;
nb[k]:=True;
End;
Until Check(nb,n)<>-1;
WriteLn(p);
End.
У меня компилируется, даже ответ выдает...
Правильный или нет - загадка, потому что неизвестно, что она должна делать...
Проверьте пожалуйста этот тест:
6
1 -1
-2 0
1 3
4 7
5 -3
6 2
Лучше напиши само условие задачи
Вот условие задачи:
Есть одна игра.В ней участвуют N человек(2<=N<=2000),вводятся их координаты(-10000<=x/y<=10000*real).Логика в том что первый по счёту/по порядку/по списку человек находит самого близкого к себе по расстоянию,и тот выбывает из игры,после этого человек идущий по порядку/по счёту/по списку после выбывшего опять проделывает вышеуказанную процедуру,всё это делается до тех пор пока не останеться один человек.Выводиться индекс этого человека в матрице.
Всё по моему...
Задача в общем простая,но я не пойму в чём проблема...
начальные значения задавать не надо?...
min присвоить что-нибудь... для приличия...
а то неизвестно, что выдаст
If min>Sqrt(Sqr(x[1]-x[i])+Sqr(y[1]-y[i]))
скажем,да может быть, но это тоже не помогает:
min:=30000;