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

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

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

> Битовые последовательности, Помогите решить задачу
Maksay
сообщение 5.09.2006 18:04
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Андрей Максай

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


Люди, кто любит решать олимпиадные задачи на Pascal'е-помогите решить:
Есть 2 битовых последовательности длины N.
Требуется узнать, можно ли получить из одной
другую посредством переворачивания подпоследовательностей
с четным кол-вом единиц, и если да-то как!
Пример:
011010010 010101010
{011010010
все символы
010010110
с 4 по 7
010101010}
P.S. mad.gif Неделю бъюсь-ничего.Кстати N-до 100.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Maksay
сообщение 5.09.2006 20:34
Сообщение #2





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Андрей Максай

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


Извиняюсь, пример действительно неудачный.Переворачивать можно сколько угодно раз и как угодно.
Другие тесты:
1)Вход:
9
100011100
001011001
Выход:
Да
6 9
3 8
1 5
2)Вход:
7
1001001
Изменить невозможно
3)Вход:
7
11001101
10101101
Выход:
Нет
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 5.09.2006 23:04
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

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


У меня вот такой алгоритм получился:

uses crt;
var c,i,j,n:integer;
s1,s2:string;
function pr(s:string):string;
begin
if s='' then pr:=s else
pr:=s[length(s)]+pr(copy(s,1,length(s)-1));
end;

begin
clrscr;
s1:='100011100';s2:='001011001'; {s1:='011010010';s2:='010101010';}
n:=byte(s1[0]);
writeln (s1); writeln (s2);
i:=1;
for i:=1 to n-1 do begin
if s1[i]=s2[i] then continue;
c:=byte(s2[i]='1'); j:=i;
repeat
inc(j);
c:=c+byte(s2[j]='1');
until (j>n) or (not(odd(c )) and (s2[j]=s1[i]));
if (j>n) then writeln ('NO') else begin
s2:=copy(s2,1,i-1)+pr(copy(s2,i,j-i+1))+copy(s2,j+1,255);
writeln ( i,' ',j,' -',s2,' ');
end;
end;
readln;
end.


Не знаю, будет ли он работать во всех случаях (по идее должен), но по нему вариант "Нет" очень даже возможен. Другого способа чего-то в голову не приходит.

Сообщение отредактировано: volvo - 2.11.2006 13:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Maksay   Битовые последовательности   5.09.2006 18:04
klem4   Может быть вариант что нам для получения придется ...   5.09.2006 19:58
volvo   В дополнение к предыдущему вопросу: может ли понад...   5.09.2006 20:03
klem4   Volvo, и на твой вопрос ответ судя по всему тоже д...   5.09.2006 20:06
volvo   Тогда есть высокая (очень высокая) вероятность тог...   5.09.2006 20:11
Maksay   Извиняюсь, пример действительно неудачный.Перевора...   5.09.2006 20:34
Malice   У меня вот такой алгоритм получился: uses crt; va...   5.09.2006 23:04
Michael_Rybak   В условии сказано: подпоследовательностей с четным...   6.09.2006 3:03
Coder_perm   В условии сказано: подпоследовательностей с четны...   6.09.2006 6:41
Michael_Rybak   >1. Переворачивать, не значит менять 0 на 1 и о...   6.09.2006 12:03
Michael_Rybak   Надеюсь, теперь я правильно понял условие :) Поня...   6.09.2006 13:53
lapp   Понятно, что преобразования у нас транзитивные и ...   7.09.2006 13:48
Malice   Ну вы и монстры, блин :) Michael_Rybak Алгоритм и...   8.09.2006 13:05
Michael_Rybak   Совсем нет: {$AppType CONSOLE} const MAX...   8.09.2006 15:28
Malice   А ты можешь доказать правильность своего? На оли...   8.09.2006 15:54
Гость   На олимпиадах не требуется доказательство правильн...   8.09.2006 16:11
mlc   Если я перечислю в программе 5 тестовых примеров ...   8.09.2006 17:26
Michael_Rybak   А эту задачу можно сдать на каком-нибудь онлайн ар...   6.09.2006 14:28
volvo   Нет возможности узнать достоверно, что имеется в в...   7.09.2006 14:59
Michael_Rybak   >Найдешь преобразование, переводящее из А в С? ...   7.09.2006 16:12
lapp   > > Найдешь преобразование, переводящее из А...   7.09.2006 23:58
Michael_Rybak   > > > Найдешь преобразование, переводящее...   8.09.2006 12:30
Гость   я нашел тест который не работает через вышеуказанн...   24.12.2010 13:56
Гость   я нашел тест который не работает через вышеуказан...   24.12.2010 13:58
Saken   блин сорри там 9 а не шесть блин ошибся :wacko:...   24.12.2010 15:13


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

 



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