Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

Олимпиадная задача   Найти похожие ветки 

 
Pumba   (2002-11-29 14:08) [0]

Господа программеры помгите мне решить эту задачу. Примного буду благодарен.

В компьютере фирмы Megasoft завелся страшный вирус. Главный
программист фирмы Гилл Бейтс заподозрил, что этот вирус переставляет
каким-то образом слова в тексте. Чтобы написать антивирус, он
распечатал исходный текст сообщения, а затем зараженный. Оба текста
уместились каждый в одной строке, содержат только английские буквы,
слова разделяются одним пробелом. Тексты не начинаются с пробела и не
заканчиваются им. Помогите Гиллу Бейтсу определить,как надо переставить
слова в тексте, чтобы его вылечить.

Ввод-вывод
Вы вводите с клавиатуры две строки?исходную и зараженную (длины
строк не превышают 255 символов).
Вы выводите на экран порядок,в котором нужно переставить слова.
Если это невозможно, необходимо напечатать 0.

Примеры

Ввод>megasoft is a best corporation
Ввод>is corporation best megasoft a
Вывод<2 5 4 1 3

Ввод>megasoft is a best corporation
Ввод>is corporation megasoft a good
Вывод< 0


 
anonim   (2002-11-29 14:15) [1]

Где Взял???


 
Pumba   (2002-11-29 14:16) [2]

Да какая разница? Вообще-то на олимпиаде. Вы решить помогите!!!! Или нет на этом сайт умных людей???


 
KoluChi   (2002-11-29 14:26) [3]

Что-то в этом духе
CODE>Strs1: TStrings; //1 строка разбить по словам
Strs2: TStrings; //2 строка
Res: TStrings;
for I := 0 to Strs2.Count - 1 do
begin
Index := Str1.IndexOf(Strs2.Strings[I])
if Index > 0 then Res.Add(IntToStr(I))
else
begin
Res.Text := "0";
Break;
end
end;


 
Calm   (2002-11-29 14:45) [4]

Не задавайте вопросы из домашних заданий
Хакеры хорошо умеют отвечать на вопросы из домашних заданий - большинство из нас их делало самостоятельно. Эти вопросы заданы для работы вам, чтобы вы могли научиться на собственном опыте. Просить можно о подсказке, но не о полном решении.


Подбробнее на http://rsdn.ru/?forum/


 
Yegor Derevenets   (2002-11-29 14:49) [5]

Вообще умные люди на дельфи не пишут. Тем более - олимпиадные задачи. А ты щас на олимпиаде в инете сидишь - или так, заочник?

Я бы прочитал все эти неххорошие словечки в массив (сам сможешь?) и получил бы что-то вроде этого:

const
MaxN=1000; // maximal amount of words
var
Sources, Results: array [1..MaxN] of string;
Answer: array [1..MaxN] of Integer;
N: Integer; // amount of words
MissionImpossible: Boolean;

procedure ReadData;
begin
...
end;

procedure WriteData;
begin
...
end;

procedure Solve;

function IndexOfWordWithIndex (aIndex: Integer): Integer;
var
NWord: Integer;
begin
for NWord:=1 to aIndex
do if Results [aIndex]=Sources [NWord]
then begin
IndexOfWordWithIndex:=NWord;
Exit;
end;
IndexOfWordWithIndex:=-1;
end;

var
NWord: Integer;
begin
MissionImpossible:=false;
for NWord:=1 to N
do begin
Answer [NWord]:=IndexOfWordWithIndex (NWord);
if Answer [NWord]<1
then MissionImpossible:=true;
end;
end;


 
MiXenWorK   (2002-11-29 14:53) [6]

Это задачи с www.olymp.vinnica.ua
(это я на вопрос про олимпиаду)


 
Yegor Derevenets   (2002-11-29 14:55) [7]

Ссори: for NWord:=1 to N


 
Yegor Derevenets   (2002-11-29 14:56) [8]

Полный текст выслать на мыло?


 
Yegor Derevenets   (2002-11-29 15:10) [9]

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


// Compiles with FreePascal 1.06
// Should compile with Borland Pascal 5.5 and later (if you remove this comments)
// Should not compile with Delphi (any version)
// All right reserved by Yegor Derevenets

const
MaxN=1000;
FileIn="aaa.in";
FileOut="aaa.out";
var
Sources, Results: array [1..MaxN] of string;
Answer: array [1..MaxN] of Integer;
N: Integer;
MissionImpossible: Boolean;

procedure ReadData;
var
F: Text;
S: string;
NChar, ScanIndx: Byte;
begin
Assign (F, FileIn);
Reset (F);
Readln (F, S);
N:=1;
for NChar:=1 to Length (S)
do if S [NChar]=#32
then Inc (N)
else Sources [N]:=Sources [N]+S [NChar];
Writeln (N);
ScanIndx:=1;
Readln (F, S);
for NChar:=1 to Length (S)
do if S [NChar]=#32
then Inc (ScanIndx)
else Results [ScanIndx]:=Results [ScanIndx]+S [NChar];
Close (F);
end;

procedure WriteData;
var
F: Text;
NWord: Byte;
begin
Assign (F, FileOut);
Rewrite (F);
if MissionImpossible
then Writeln (F, 0)
else begin
for NWord:=1 to N-1
do Write (F, Answer [NWord], #32);
Writeln (F, Answer [N]);
end;
Close (F);
end;

procedure Solve;

function IndexOfWordWithIndex (aIndex: Integer): Integer;
var
NWord: Integer;
begin
for NWord:=1 to N
do if Results [aIndex]=Sources [NWord]
then begin
IndexOfWordWithIndex:=NWord;
Exit;
end;
IndexOfWordWithIndex:=-1;
end;

var
NWord: Integer;
begin
MissionImpossible:=false;
for NWord:=1 to N
do begin
Answer [NWord]:=IndexOfWordWithIndex (NWord);
if Answer [NWord]<1
then MissionImpossible:=true;
end;
end;

begin
ReadData;
Solve;
WriteData;
end.



 
Pumba   (2002-11-29 15:35) [10]

Компилирую на паскале.
на строку:
Source, results: array [1..MaxN] of string
он пишет слишком большая структура


 
Pumba   (2002-11-29 15:41) [11]

А все. до меня дошло. Огромное тебе спасибо Yegor Derevenets.

MiXenWorK - да, задачи, видимо, брали оттуда, но мне эту задачу дал препод, если не решу - мне двояк за неработу на уроке.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.015 c
14-28212
Александр Павлов
2002-11-17 05:59
2002.12.09
FindFirst( Украина Донецк Гуру.MAN ,faНеРедиска, Delphi + Beer );


4-28332
Renat
2002-10-23 16:55
2002.12.09
С помощью какой API - функции можно вызвать из моей программы..


1-28003
Yogi
2002-11-25 22:59
2002.12.09
Еще о stringgrid


14-28222
alexsandri
2002-11-16 02:56
2002.12.09
Мужики а знаите ли вы страшные слова на


4-28373
Deema Po
2002-10-25 20:20
2002.12.09
Почти TOPMOST





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский