Простая задачка по программированию

Все здесь

Re: Простая задачка по программированию

Сообщение Сергей » 25 мар 2009, 00:31

Вот мое ИМХО, я не профи и не спортивный программист, но вот как я увидел решение, возможно оно не верно, хз.
Код: Выделить всё
ПРИШЛА ВЕСНА

РАСТАЯЛ СНЕГ


Преобразовываем к виду
Код: Выделить всё
РЛАЕСНА

РАСАЛСНЕ


Берем первую бувку первого слова, смотрим сколько
до такого же символа во второй строке
В данном случае они находятся в первой позиции.
Записываем этот символ в ответ: "Р"

Следовательно смотрим на символы 'Л' и 'A'.

Берем для начала символ 'Л' и считаем "отступы"( не знаю как грамотно сказать ) до такого же символа
в другой строке.
Код: Выделить всё
Л
     \
А С А Л


Их - 3 отступа.

Считаем для второй строки, то есть берем символ А.

Код: Выделить всё
Л А
/
А


Всего 1 отступ.

Записываем символ в ответ,получается уже "РА"

Символ который мы нашли не учитываем в следующей итерации
Код: Выделить всё
Л (А)
  /
А


Не используемые символы обозначены "( )"
Код: Выделить всё
(Р) (Л) (А) Е С Н А

(Р) (А)  С  А Л С Н Е


Считаем дальше * Я не пишу целиком фразы для простоты *

Код: Выделить всё
(А) Е С
     /
С

Отступов - 2
Код: Выделить всё
(А) Е
        \
С  А Л Н Е


Отступов - 4

Следовательно выбираем С и добавляем к ответу: "РАС"
Вот вид оставшегося:
Код: Выделить всё
(Р) (Л) (А) (Е) (С) Н А

(Р) (А) (С)  А   Л  С Н Е


Идем дальше..

Код: Выделить всё
(Е) (С) Н А
         /
А


Отступа - 3

Код: Выделить всё
(Е) (С) Н
          \
А   Л  С Н Е


Отступа - 1

Выбираем Н и добавляем к ответу "РАСН", так как слово кончилось, то это
будет окончательный ответ.
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Простая задачка по программированию

Сообщение =DeaD= » 25 мар 2009, 09:59

Montoya писал(а):Блин, кому-то не сложно, а у кого-то уже мозг кипит от динамического программирования...

Ну скажем так, чтобы мозг не кипел, этой темой надо прозаниматься достаточно долго :)

Я думаю на моём счету побольше сотни задач будет, решенных этим методом.

Добавлено спустя 1 минуту 47 секунд:
2Сергей: А можно как-то более свёрнуто описать решение? :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Простая задачка по программированию

Сообщение Denis_Wozniak » 25 мар 2009, 10:30

Сергей пошел по тому же принципу, что и я, только я не удалял буквы повт-иеся один раз.
Аватара пользователя
Denis_Wozniak
 
Сообщения: 175
Зарегистрирован: 31 дек 2008, 22:47
Откуда: Подмосковье, Ногинск
прог. языки: С, С++, Ну и начинал я в Visual Basic.

Re: Простая задачка по программированию

Сообщение =DeaD= » 25 мар 2009, 11:00

Вы бы этот принцип как-то русским языком описали, что ли :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Простая задачка по программированию

Сообщение Сергей » 25 мар 2009, 14:00

Может сегодня вечером напишу если будет еще актуально.
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: Простая задачка по программированию

Сообщение hudbrog » 25 мар 2009, 14:15

Чета вспомнилась задачка со школьной окружной(или городской ли? хз) олимпиады по программированию, год, наверна, 2000-2001 или около того. На вход дается строка - десятичная дробь произвольной длинны. Нужно определить, периодичная она или нет, записать в виде, с указанием периода. При этом периодичность может начинаться не с первого знака дроби. Как-то так. По сути примерно то же самое.
У меня в голове опилки и длинные слова меня только огорчают.
Аватара пользователя
hudbrog
 
Сообщения: 1585
Зарегистрирован: 14 май 2008, 15:49
Откуда: Москва
ФИО: Алексей

Re: Простая задачка по программированию

Сообщение =DeaD= » 25 мар 2009, 14:39

hudbrog писал(а):На вход дается строка - десятичная дробь произвольной длинны. Нужно определить, периодичная она или нет, записать в виде, с указанием периода. При этом периодичность может начинаться не с первого знака дроби. Как-то так.

Ежели дробь периодичная - как же она может быть произвольной длины? Она бесконечная должна быть! :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Простая задачка по программированию

Сообщение Digit » 25 мар 2009, 15:19

Dead, я так думаю, что произвольной длины строка, в которой записана дробь. ;)
злой полицейский
Аватара пользователя
Digit
 
Сообщения: 3339
Зарегистрирован: 27 ноя 2004, 00:42
Откуда: совсем Москва
ФИО: Григорий

Re: Простая задачка по программированию

Сообщение =DeaD= » 25 мар 2009, 15:35

У него сказано "десятичная" :) а периодическая десятичная дробь по определению бесконечна :)

К тому же если обычная дробь не конечна в десятичном виде, то она однозначно периодическая :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Простая задачка по программированию

Сообщение hudbrog » 25 мар 2009, 16:21

Да, произвольной длины конечно строка. По условиям там вроде должно быть минимум два периода полностью указаны, если она периодична, последний период может быть указан не до конца естественно.
У меня в голове опилки и длинные слова меня только огорчают.
Аватара пользователя
hudbrog
 
Сообщения: 1585
Зарегистрирован: 14 май 2008, 15:49
Откуда: Москва
ФИО: Алексей

Re: Простая задачка по программированию

Сообщение =DeaD= » 25 мар 2009, 16:43

hudbrog писал(а):По условиям там вроде должно быть минимум два периода полностью указаны, если она периодична, последний период может быть указан не до конца естественно.

Если так принимать, тогда можно считать, что последний всегда до конца указан и там есть минимум 2 периода.

А значит можно задачу перебором решить за O(N^2). Что-то за меньшее время не приходит в голову сразу решение :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Простая задачка по программированию

Сообщение Montoya » 25 мар 2009, 17:26

Сергей писал(а):Может сегодня вечером напишу если будет еще актуально.

Конечно актуально! Мне лично очень полезно будет разборать твой вариант решения :)
=DeaD= писал(а):Ну скажем так, чтобы мозг не кипел, этой темой надо прозаниматься достаточно долго

Естественно) просто я программированием "профессионально" занимаюсь меньше года, и самому довольно трудно разбирать новый материал((
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Простая задачка по программированию

Сообщение =DeaD= » 25 мар 2009, 17:27

Montoya писал(а):Естественно) просто я программированием "профессионально" занимаюсь меньше года, и самому довольно трудно разбирать новый материал((

Это не профессиональное, это олимпиадное (спортивное) программирование - очень помогает в смысле вырабатываемых навыков в сложных задачах в профессиональном программировании, хотя имеет не очень много общего.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Простая задачка по программированию

Сообщение Montoya » 25 мар 2009, 17:29

Поэтому слово Профессионально в кавычках :)
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

Re: Простая задачка по программированию

Сообщение hudbrog » 25 мар 2009, 17:30

ээ.. не понял почему последний можно считать до конца указанным.
тебе может быть дано 3.14159265358965358965
на выходе оно должно дать 3.141592(653589)

В общем задача вроде не сложная, я тогда вроде даже решил. Но по тестам (там проводилось автоматизированное тестирование на закрытом наборе входных данных) у меня получилось чета около 40% попадания в правильный результат =)

А олимпиадное программирование имхо может понадобица тока при работе в гугле =) В остальном, работа программиров - вообще другое.
У меня в голове опилки и длинные слова меня только огорчают.
Аватара пользователя
hudbrog
 
Сообщения: 1585
Зарегистрирован: 14 май 2008, 15:49
Откуда: Москва
ФИО: Алексей

Пред.След.

Вернуться в Свободное общение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron