Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Поиск единственного минимума в массиве


Автор: ARAV 18.5.2007, 04:12
Здравствуйте!
Очень прошу помочь мне с задачкой - что-то не получается сообразить, как её решить нормально.
Условие:
Есть двумерный массив:

Код

S[0,0] S[0,1] ... S[0,n]
S[1,0] S[1,1] ... S[1,n]
...
S[k,0] S[k,1] ... S[k,n]


Нужно пройти все строчки этого массива и проверить, есть ли там ЕДИНСТВЕННЫЙ минимум (то есть не рассматриваются случаи, когда минимум есть, но он повторяется в каком-то другом элементе строки массива, например 2 5 3 2 6 - формально минимум равен 2, но он повторился, значит нам не подходит). Как только мы найдем единственный минимум, останавливаемся и выдаём сообщение "Минимум найден" и пишем, в каком элементе S[i,j] он найден. Если мы пройдём все строчки и не обнаружим такого минимума, то, например, выдается сообщение "минимума нет".

Я пытался решать эту задачу так: делал сортировку каждой строчки по возрастанию, т.е. минимум всегда был первым элементом. Потом делал проверку: если первый элемент совпадает со вторым, то минимум не единственный. Но вот как потом найти, какой именно элемент S[i,j] начального массива нам этот минимум дал, я не знаю.

Заранее благодарю всех за ответы.

Автор: Misha_White 18.5.2007, 09:52
ARAV, 
ненадо сортировать! Ищи минимум и ставь дополнительный счетчик!
Код

Var i,j,k,n,mi,mj:integer;
       flag:boolean;
....
flag:=false;
for i:=1 to k do
begin
 kol:=0;
 min:=s[i,1];
for j:=1 to n do
  begin
    if s[i,j]<=min then
      begin
       min:=S[i,j];
         mi:=i;
         mj:=j;
        inc(Kol);
      end;
    if kol=1 then
      begin
       writeln('Минимальный S[',mi,';',mj,']=',min);
       flag:=true;
      end;
  end;
if not(flag) then
 Writeln('Минимума нет');
end;


Добавлено @ 09:53
Пойдет?

Автор: ARAV 18.5.2007, 20:08
Misha_White, большое спасибо! Теперь я вижу, что всё можно сделать гораздо проще.

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