Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.02.2012, 11:37
steam13 steam13 вне форума
Прохожий
 
Регистрация: 22.02.2012
Сообщения: 4
Репутация: 10
По умолчанию Не проходят некоторые тесты в задаче

Здравствуйте. Собственно есть несложная задача по программированию. Решил как полагается, но все равно программа в некоторых тестах выводит неправильный ответ (в каких - не знаю). Поправьте пожалуйста что не так.

Условие
Код:
Одной из задач, возникающей при разработке поисковых систем, является поиск самых популярных сайтов по ключевым словам (тегам), описывающим сайт. Дан список сайтов. Про каждый сайт известны набор тегов сайта и его популярность. Есть запрос в виде набора тегов. На запрос необходимо выдать самый популярный сайт, у которого в описании встречаются все теги из запроса.

Формат входного файла

В первой строке входного файла input.txt находится набор тегов, разделённых ровно одним пробелом, количество тегов не превосходит 5. Тегом назовём такую строку, которая содержит только строчные латинские буквы и ее длина не превосходит 10 символов. В следующей строке дано число N (1 ≤ N ≤ 20)— количество сайтов.

Каждый сайт описывается тремя строками. В первой строке название сайта. Название сайта состоит только из строчных латинских букв и точки. Длина названия сайта не превосходит 15 символов. Во второй строке набор тегов сайта, разделенных пробелами. Количество тегов не превосходит 10. В третьей строке число Ai(1 ≤ Ai ≤ 1000000)— популярность сайта.

Формат выходного файла

В выходной файл output.txt требуется вывести любой самый популярный сайт, у которых встречаются все теги из запроса. Гарантируется, что найдётся, хотя бы один сайт отвечающий запросу.


Пример входного файла
Код:
football volleyball
5
sportbox.ru
sport football volleyball basketball swimming hockey
5000
championat.com
sport football volleyball basketball hockey
4000
soccer.ru
sport football
6000
sport.ru
sport football vоlleyball
1000
sports.ru
sport football volleyball basketball swimming hockey
2000

Мое решение
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var n,i,j,k,pop,x,y,p,b,kt:Integer;
tag,site:string;
a:array [1..20,1..4] of string;
st:array [1..20,1..10] of string;
tags:array [1..5] of string;
begin
Assign(Input,'Input.txt');
Reset(Input);
Readln(tag);
Readln(N);
for i:=1 to n do
  begin
    Readln(a[i,1]);
    Readln(a[i,2]);
    Readln(a[i,3]);
    a[i,4]:='0';
  end;
  pop:=0;
  k:=Length(tag);
  kt:=0;
  y:=1;
  p:=0;

  for i:=1 to k+1 do
  if (Copy(tag,i,1)=' ') or (i=k+1) then
    begin
     Inc(kt);
     tags[kt]:=Copy(tag,y,i-y);
     y:=i+1;
    end;
  x:=0;
  y:=1;
  p:=0;

   for p:=1 to n do   begin x:=0; y:=1;
   for b:=1 to Length(a[p,2])+1 do
    if (Copy(a[p,2],b,1)=' ') or (b=Length(a[p,2])+1) then
    begin
     Inc(x);
     st[p,x]:=Copy(a[p,2],y,b-y);
     y:=b+1;
    end;

   end;



for i:=1 to n  do
for j:=1 to 10  do
if ((st[i,j]=tags[1]) or (st[i,j]=tags[2]) or (st[i,j]=tags[3]) or (st[i,j]=tags[4]) or (st[i,j]=tags[5])) and (st[i,j]<>'') then
a[i,4]:=IntToStr(StrToInt(a[i,4])+1);

      pop:=StrToInt(a[1,3]);
      site:=a[1,1];
      for i:=1 to n do
      begin x:= StrToInt(a[i,3]);
      if (a[i,4]=IntToStr(kt)) and (pop < x)then begin site:=a[i,1]; pop:=x; end;
      end;







Assign(Output,'Output.txt');
Rewrite(Output);


write(site);
Close(Output);
end.

Последний раз редактировалось steam13, 22.02.2012 в 11:40.
Ответить с цитированием
  #2  
Старый 22.02.2012, 12:13
steam13 steam13 вне форума
Прохожий
 
Регистрация: 22.02.2012
Сообщения: 4
Репутация: 10
По умолчанию

Может обнуляю где то что то не так)
Ответить с цитированием
  #3  
Старый 22.02.2012, 12:28
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вам нужно на паскале решение или в дельфи? Для Дельфи есть готовые классы которые существенно упрощают решение.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 22.02.2012, 12:41
steam13 steam13 вне форума
Прохожий
 
Регистрация: 22.02.2012
Сообщения: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Вам нужно на паскале решение или в дельфи? Для Дельфи есть готовые классы которые существенно упрощают решение.
на делфи. но мне желательно мое решение доработать) Ведь на олимпиаде нельзя будет пользоваться модулями, но если ознакомите с классами - буду очень признателен)

Последний раз редактировалось steam13, 22.02.2012 в 12:49.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:22.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025