IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Последовательность чисел, Помогите решить
Ольга
сообщение 8.05.2007 10:58
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Оля

Репутация: -  0  +


Помогите решить, пожалуйста, такую задачу:

Задается натуральное число N и последовательность a1, …, aN из N целых чисел.
Мы можем вычеркнуть из этой последовательности какие-то элементы и получить строго возрастающую последовательность.
Требуется найти количество строго возрастающих последовательностей максимальной длины, которые мы можем получить вычеркиванием каких-то элементов из введенной последовательности.

Заранее, спасибо. Оля
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
Ольга
сообщение 10.05.2007 8:36
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Оля

Репутация: -  0  +


Хоть кто-нибудь откликнитесь, пожалуйста, на эту задачу. Помогите решить!!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 10.05.2007 8:51
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Ольга @ 10.05.2007 9:36) *

откликнитесь, пожалуйста, на эту задачу. Помогите решить!!!!!

Нет проблем smile.gif.
Оля, а можно тебя попросить?.. Я вот выложу код без комментариев, а ты, если можно, объясни, как он работает. Ну, чтобы была реальная польза от списывания.. Идет?.. smile.gif
Если будут вопросы по отдельным моментам - ответим, будь уверена. yes2.gif

Вот код:
{Quantity of Max Length Strictly Increasing Subchains}
{by Lapp for Olga}
const
n=8;

var
a,e:array[1..n]of integer;
i,j,k,l,m,x:integer;
Gr:boolean;

begin
//Randomize;
for i:=1 to n do begin
a[i]:=Random(n);
e[i]:=0;
Write(a[i]:5)
end;
WriteLn;
m:=1;
k:=1;
repeat
i:=1;
while e[i]=1 do if i<n then begin
e[i]:=0;
Inc(i)
end
else begin
WriteLn('Max Length is ',m,', total of ',k);
ReadLn;
Exit
end;
e[i]:=1;
l:=1;
Gr:=true;
x:=i;
for j:=i+1 to n do if e[j]=1 then begin
Inc(l);
if a[x]>=a[j] then Gr:=false else x:=j
end;
if Gr then if l>m then begin
m:=l;
k:=1
end
else if l=m then Inc(k)
until false
end.


Добавлено через 2 мин.
Да, хочу оговориться, что я считал разными последовательности, составленные из одинаковых чисел, стоящих на разных местах. Иначе говоря, я считал количество способов вычеркивания. Условие можно понимать по-разному, поэтому я счел необходимым привести это уточнение.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ольга
сообщение 10.05.2007 11:13
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Женский
Реальное имя: Оля

Репутация: -  0  +


Спасибо большое за реальную помощь. Я программу опробовала и попробую объяснить (может и не все правильно), как она работает.
Последовательность заполняется случайными числами.
m - максимальное кол-во чисел последовательности
к- количество последовательностей
Далее идет цикл с постусловием. Идет сравнение последующего числа с предыдущим. Выводится на печать "максимальная последовательность из __чисел и количество возможных последовательностей.
А далее я эту часть программы я затрудняюсь объяснить:
    e[i]:=1;
l:=1;
Gr:=true;
x:=i;
for j:=i+1 to n do if e[j]=1 then begin
Inc(l);
if a[x]>=a[j] then Gr:=false else x:=j
end;
if Gr then if l>m then begin
m:=l;
k:=1
end
else if l=m then Inc(k)
until false
Если Вы можете, то поясните, пожалуйста.

М
Ольга, при публикации программного текста обязательно используй теги!
Lapp

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 14:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"