Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
1:36
1436
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2

АвторПаскаль
for i:= 1 to n do
for j:= 1 to n - i do
if a[j]>a[j+1] then
begin

x:= a[j+1];
a[j+1]:=a[j];
a[j]:=x;

end;

Это для сортировки по возрастанию. Для сортировки по убыванию нужно поменять знак > на знак <.

Что касается второй задачи, то она сильно отличается от первой по уровню. Тут и проверять нужно входные данные по нескольким критериям и искать эти самые последовательности. На паскале ничем помочь не могу.
Большое спасибо, с этим разобрался. А вот в такой задаче:
Дан массив. Необходимо его циклически сдвинуть на k элементво вправо. Разрешается использовать только несколько дополнительных переменных в памяти.
Как сделать, чтобы x[N] следовало за x[1], и как обойтись без дополнительного массива?
Еще требуют дать для каждой задачи оценку сложности алгоритма. "Этта было не просто" никого не устроит?
Разрешается использовать только несколько дополнительных переменных в памяти.
Обожаю такие критерии)))
"Дан массив. Необходимо его циклически сдвинуть на k элементво вправо. Разрешается использовать только несколько дополнительных переменных в памяти."
как-то так:
for i:=1 to k do begin
b:=a[1];
for j:=2 to n do
a[j-1]:=a[j];
a[n]:=b;
end;
или(смотря где право)
for i:=1 to k do begin
b:=a[n];
for j:=n-1 downto 1 do
a[j+1]:=a[j];
a[1]:=b;
end;

k - на сколько элементов сдвигать
a - исходный массив
n - номер последнего элемента массива
Дана последовательность целых чисел, среди которых нет одинаковых. Требуется вычеркнуть минимальное возможное количество чисел так, чтобы оставшиеся шли в порядке возрастания

проверить неначем, но как-то так:
l:=0;
for i:=1 to n-1 do begin
__for j:=1 to n do
____b[j]:=0;
__for m:=1 to n-i do begin
____b[i]:=1;
____c:=a[i];
____k:=1;
____for j:=i+m to n do
______if c<a[j] then begin
________c:=a[j];
________b[j]:=1;
________k:=k+1;
______end;
____if k>l then begin
______l:=k;
______for j:=1 to n do
________d[j]:=b[j];
____end;
__end;
end;
for j:=1 to n do
__a[j]:=a[j]*d[j];

и далее нулевые элементы удаляем.

фишка в том, что "тупым" перебором ищем вариант с наибольшим числом остающихся цифр, затем ненужные цифры обнуляем и удаляем.
Спасибо, проверю. А как оценить сложность алгоритма?
Насчет 25 ошибочка, как минимум одна:
3 и 4 строчки(for j:=1 to n do b[j]:=0;) надо написать перед b[i]:=1;


Сложность алгоритма.. точно не знаю, но можно по количеству циклов, ветвлений, использованных переменных, по числу всех операций, времени выполнения алгоритма.
спасибо большое
1|2
К списку тем
2007-2025, онлайн игры HeroesWM