|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.11.2013, 11:31 | #1 |
Новичок
Джуниор
Регистрация: 16.11.2013
Сообщений: 2
|
запутался в задачах - олимпиадная задача "Сканворд"
здравствуйте , нужно решить задачи по информатике по программированию .
1 я сделал , другие немогу вот первая : Сканворд Имя входного файла input.txt Имя выходного файла output.txt Максимальное время работы на одном тесте 2 секунды Ограничение по памяти 64 МБ Вася все свое свободное время тратит на решение сканвордов. Сканводр представляет собой прямоугольную таблицу, в пустые клетки которой нужно вписывать слова по горизонтали и по вертикали. В сканводре каждое слово начинается сразу от непустой клеткой или от границы таблицы. Заканчиваются слова соответственно на границе таблицы или перед непустой клеткой. Никакие два слова не следуют друг за другом подряд и не накладываются. Слова могут пересекаться друг с другом только в том случае, если одно слово идет по горизонтали, а второе по вертикали. В сканворде не используются слова длиной меньше двух букв. Для каждого слова в непустые клетки или за границей сканворда записываются вопросы-подсказки, помогающие отгадать слово. Таким образом, любая несвободная клетка может содержать либо вопросы-подсказки, либо рекламу, а во все пустые клетки должны вписываться буквы слов-ответов. Порешав сотни сканвордов, Вася решил создать свой собственный. Для начала он хочет составить прямоугольную таблицу размером N×M, а затем вписать туда свои слова. При составлении таблицы он случайным образом закрасил часть клеток и решил, что в них будут размещаться вопросы-подсказки. Но тут до него дошло, что при случайном формировании таблицы у него может не получиться правильный сканворд. Так как переделывать всю работу долго, он решил закрасить еще несколько клеток и получить правильный сканворд. Помогите Васе подсчитать, какое минимальное количество клеток придется закрасить. Формат входных данных: В первой строке входного файла заданы два целых числа N и M (3 ≤ N, M ≤ 1000). В последующих N строках записано по M символов, причем, символ "." обозначает клетку, в которую будут вписываться буквы, а символ "#" обозначает клетку, в которой будет размещаться вопрос-подсказки или реклама. Формат выходных данных: В выходной файл выведите, какое количество клеток нужно закрасить Пример input.txt output.txt 3 4 .... .... .... 0 4 3 ### #.# ### #.# 2 я незнаю как сделать ввод строки переменной длинны |
16.11.2013, 12:54 | #2 |
Участник клуба
Регистрация: 05.11.2013
Сообщений: 1,601
|
Читайте сразу строкой
Код:
|
16.11.2013, 13:02 | #3 |
Новичок
Джуниор
Регистрация: 16.11.2013
Сообщений: 2
|
спасибо , но непонятно что дальше
|
16.11.2013, 14:13 | #4 | |
Участник клуба
Регистрация: 05.11.2013
Сообщений: 1,601
|
Например так:
Текст такой Цитата:
Код:
|
|
17.11.2013, 23:35 | #5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ZX Spectrum-128, Вы уверены, что Ваш код для входных данных
Цитата:
это же олимпиадная задача. Кстати, вот на неё ссылка: Главная / Соревнования / Муниципальный этапа Всероссийской олимпиады по информатике 2013/2014. День 2. / Сканворд Задача стоит не в том, чтобы посчитать "решётки", а в том, чтобы определить, сколько минимально нужно расставить "решёток" на заданном поле, чтобы там мог получится корректный сканворд. что дальше - проверяйте строки и столбцы, где непрерывная длина из свободных полей ('.') меньше или равна 2-м и закрашивайте их (подсчитывая, сколько ячеек Вам пришлось закрасить - это и будет ответом). Учтите, что после закрашивания, ситуация на поле может изменится (вы решёткам перекроете перпендикулярную линию), поэтому нужно проходить по матрице в тех местах, где закрашиваете повторно. |
|
18.11.2013, 07:45 | #6 |
Участник клуба
Регистрация: 05.11.2013
Сообщений: 1,601
|
Нет, ни в коем случае. Я и НЕ собирался решать задачу. Моей целью было показать как читать строки из файла и как работать с массивом строк.
Upd: Надо было пояснить в том посте, что я не решаю задачу, а только делаю, что написал выше. Последний раз редактировалось ZX Spectrum-128; 18.11.2013 в 08:10. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Олимпиадная задача | СергейАстрахань | Помощь студентам | 2 | 31.01.2013 11:48 |
Олимпиадная задача. | Godziller | Фриланс | 6 | 28.05.2012 14:10 |
олимпиадная задача | quade1992 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 17.05.2012 18:57 |
Олимпиадная задача | Alexey_kor | Помощь студентам | 7 | 30.01.2011 02:22 |
Олимпиадная задача | Carbon | Общие вопросы C/C++ | 2 | 23.05.2007 22:07 |