IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите решить элементарную таску, нада решить 1 таску
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


На поле размера N*M расположено некоторое число (от 1 до 100) вирусов. За один ход вирус заражает 4 соседние клетки, имеющие с ним общую сторону. Все вирусы хотят одновременно. За какое минимальное число ходов будет заражено все поле?

Входные данные: Числа N и M, разделенные пробелом (1<=N,M<=1000). Далее N строк по M символов - поле с вирусами. Пустая клетка обозначается точкой. Клетка с вирусом обозначается *.

Выходные данные: Единственное число - ответ задачи.

Пример входных данных
3 4
....
..*.
....
Пример выходных данных
3

Не знаю как проверять, если будет больше одного вируса sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Ну с одним-то как считаешь? Если вирус стоит у края поля, или в углу, то он заражает то, что может?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Цитата(Unconnected @ 21.06.2010 20:31) *

Ну с одним-то как считаешь? Если вирус стоит у края поля, или в углу, то он заражает то, что может?

да. два или три поля
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Смотри:


{$APPTYPE CONSOLE}

const p=1000;

var pol:array [1..p,1..p] of char;
n,m,i,j,hod:integer;

function getwin:boolean;
var i,j:integer;
begin
result:=true;
for i:=1 to n do
for j:=1 to m do if pol[i,j]<>'*' then begin
result:=false;
exit;
end;
end;

Function v(i,j:byte):boolean;
begin
if pol[i,j]='*' then result:=true else result:=false;
end;

begin
hod:=0;
assign(input,'input.txt');
readln(n,m);
for i:=1 to n do for j:=1 to m do pol[i,j]:=#0;
for i:=1 to n do begin
for j:=1 to m do read(pol[i,j]);
readln;
end;
while not(getwin) do begin
for i:=1 to n do begin
for j:=1 to m do begin
if v(i,j) then begin
if (i<n) and not v(i+1,j) then pol[i+1,j]:='#';
if (j<m) and not v(i,j+1) then pol[i,j+1]:='#';
if (i>1) and not v(i-1,j) then pol[i-1,j]:='#';
if (j>1) and not v(i,j-1) then pol[i,j-1]:='#';
end;
end;
end;
for i:=1 to n do for j:=1 to m do if pol[i,j]='#' then pol[i,j]:='*';
inc(hod);
end;
assign(output,'output.txt');
writeln(hod);
end.


Обновлено.

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Обновил код, предыдущий ошибался кое-где.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Цитата(Unconnected @ 21.06.2010 22:47) *

Обновил код, предыдущий ошибался кое-где.

Серовно не работает. sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


На каких входных данных? Я гонял на m и n до 10, соответствовало вроде бы.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(xxx000 @ 21.06.2010 23:58) *
Серовно не работает. sad.gif
xxx000, а какой смысл тебе решать? ты даже не отвечаешь и вряд ли смотришь решения.

М
Просьба срочно привести название темы в соответствие с Правилами Форума и правилами раздел Задачи. В противном случае тема будет закрыта



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 17:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name