powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Олимпиадная задача в Pascal'e
4 сообщений из 4, страница 1 из 1
Олимпиадная задача в Pascal'e
    #36336963
webster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Недавно увлекся олимпиадами по программированию. Застрял на одной из задач. Может кто поможет. Уже есть некоторые наброски. Но при проверке задачи выставляется 50 баллов из 100 возможных. Задача и мой исходник ниже в архиве.
...
Рейтинг: 0 / 0
Олимпиадная задача в Pascal'e
    #36378315
mpi1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webster,

Касательно вашего решения - массива в 1000 значений явно недостаточно, потому что по одной карточке в данной задаче можно ездить до 3000 раз.

Даже не вникая в зависимость стоимости поездки от количества поездок, задача решается элементарным перебором, количество комбинаций не велико, если конечно отсечь заведомо неправильные ветки.
...
Рейтинг: 0 / 0
Олимпиадная задача в Pascal'e
    #36378506
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  for i :=  2  to  999  do
                   case i of
                         2 .. 4 : if i mod  2  =  0  then
                                             a[i+ 1 ] := a[i] +  20 . 33 
                                             else
                                             a[i+ 1 ] := a[i] +  20 . 34 ;
                         5 .. 9 : a[i+ 1 ] := a[i] +  19 ;
                         10 .. 19 : a[i+ 1 ] := a[i] +  18 ;
                         20 .. 59 : if i mod  2  =  0  then
                                               a[i+ 1 ] := a[i] +  12 . 13 
                                               else
                                               a[i+ 1 ] := a[i] +  12 . 12 ;
                         60 .. 69 : a[i+ 1 ] := a[i] -  1 . 5 ;
                         70 .. 999 : a[i+ 1 ] := a[i] +  15 . 71 ;
                   end;
...
А зачем в цикле проверяется i на диапазон? Ведь заранее известно КОГДА цикл по нему пройдет. Извини автор я конечно не знаю Delphi, может там так принято, но глаз машинально отмечает оптимизационные антипаттерны.
...
Рейтинг: 0 / 0
Олимпиадная задача в Pascal'e
    #36378650
mpi1979
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А зачем в цикле проверяется i на диапазон?

Думаю исключительно для простоты, чтобы не разбивать на шесть циклов.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Олимпиадная задача в Pascal'e
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]