Форум: "Основная";
Текущий архив: 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