Колония клеток представляет собой квадратную матрицу порядка N (N < 500). В колонию...

0 голосов
148 просмотров
Колония клеток представляет собой
квадратную матрицу порядка N (N < 500). В колонию
проникает M (M < 11) вирусов, которые
поражают клетки с координатами (X1, Y1),
… (Xm, Ym). За одну единицу времени вирус
проникает в клетки, соседние с зараженными (соседними считаются клетки, имеющие
общую сторону).


Требуется написать программу, которая определит
время заражения всей колонии.






Информатика (12 баллов) | 148 просмотров
0

какой язык? ооп?

Дан 1 ответ
0 голосов

Program Task;
Const N = 499; M = 1;
Var A: Array [1..N, 1..N] of Boolean;
i, j, x, y, t: Integer;
b: Boolean;
Begin
Randomize;
While i < M Do
Begin
x := Random(N) + 1;
y := Random(N) + 1;
If A[x, y] = False Then
Begin
A[x, y] := True;
i := i + 1;
End;
End;
While b = False Do
Begin
b := True;
For i := 1 To N Do
For j := 1 To N Do
Begin
If A[i, j] = True Then
Begin
If (i + 1) <= N Then<br>A[i + 1, j] := True;
If (i - 1) > 0 Then
A[i - 1, j] := True;
If(j + 1) <= N Then<br>A[i, j + 1] := True;
If (j -1) > 0 Then
A[i, j - 1] := True;
End;
End;
For i := 1 To N Do
For j := 1 To N Do
If A[i, j] = False Then
b := False;
t := t + 1;
End;
WriteLn(t);
ReadLn;
End.

(2.8k баллов)
0

Этот вариант с максимальными параметрами (499х499 клеток и 1 вирус) вычисляет довольно долго (4-6 сек). Но думаю, вам этого хватит.