profile
Опубликовано 6 лет назад по предмету Информатика от LastError

Напишите на Pascal задачу.
7 класс
Просьба помочь с данной задачой.
Заранее спасибо.

Арифметическая Прогрессия
Для проведения парада по случаю нового года требуется некоторое количество военнослужащих. На параде военнослужащие занимаются исключительно построением в шеренги. Шеренга называется регулярной, если военнослужащие в ней либо все одного роста, либо рост возрастает от одного конца шеренги к другому каждый раз на одну и ту же величину, образуя тем самым арифметическую прогрессию.

Чтобы достойно выступить на параде, создайте из имеющихся в вашем расположении военнослужащих максимальную регулярную шеренгу.



Входные данные:

В первой строке входного файла задано число N - количество военнослужащих (0<=N<=5000).

Во второй сторке задан их рост в миллиметрах, где 0<=a[i]=5000.



Выходные данные:

Количество военнослужащих в максимальной регулярной шеренге.

  1. Ответ
    Ответ дан archery
    const
        auto = false;

    var
        soldier: array[1..5000]of integer;
        n, i, j, k, max, t, d, imax, a, c: integer;

    begin
        if auto then begin
            n := random(5000);
            for i := 1 to n do
                soldier[i] := random(5000);
        end
        else begin
            readln(n);
            for i := 1 to n do
                read(soldier[i]);
        end;
       
        {сортирововчка}
        for i := 1 to n - 1 do
        begin
            imax := i;
            for j := i + 1 to n do
                if soldier[j] > soldier[imax] then
                    imax := j;
            max := soldier[i];
            soldier[i] := soldier[imax];
            soldier[imax] := max;
        end;
       
        max := 0;
        for i := 1 to n - 1 do
            for j := i + 1 to n do
            begin
                a := soldier[j];
                d := soldier[j] - soldier[i];
                c := 2;
                for k := j + 1 to n do
                    if soldier[k] = a + d then begin
                        a := soldier[k];
                        c := c + 1;
                    end;
                if c > max then max := c;
            end;
       
        writeln(max);
    end.

    1. Ответ
      Ответ дан LastError
      Большое спасибо за помощь.
    2. Ответ
      Ответ дан archery
      если правильно, то поставь лучшее решение пожалуйста, надо для статуса) заранеее спасибо)
    3. Ответ
      Ответ дан LastError
      обязательно
    4. Ответ
      Ответ дан archery
      спасибо)
Самые новые вопросы