Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
8-28150
radix
2002-08-20 07:49
2002.12.09
Хочу быстрое превью изображений


1-28056
vaneks
2002-11-27 21:30
2002.12.09
Файлы... Они есть?


14-28245
Nico1a
2002-11-18 14:02
2002.12.09
ОГРОМНАЯ просьба ко всем, кто кроме Дельфи разбирается в химии !!


3-27824
Карелин Артем
2002-11-15 11:02
2002.12.09
Как вам такой запрос???


4-28344
Olgerd
2002-10-28 02:36
2002.12.09
Текст из Word а