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

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

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

> задача про фотографию, двумерный массив является цветной фотографией
oleg
сообщение 3.01.2006 15:39
Сообщение #1


Гость






Двумерный массив является "цветной фотографией", каж-
дый его элемент - номер цвета некоторой точки (от 1 до некото-
рого значения Max).
Будем считать, что если два элемента стоят рядом по
вертикали или по горизонтали и имеют одинаковый цвет, то они
принадлежат одной области. (Вся область определяется рефлек-
сивно-транзитивным замыканием этого отношения.)
Требуется найти количество разных цветных областей.
Запрещается пользоваться метками!

P.S до зачета три дня

Сообщение отредактировано: oleg - 3.01.2006 15:51
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
virt
сообщение 3.01.2006 18:59
Сообщение #2


Знаток
****

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

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


Код
program num_obl;
const maxN = 10;
var a : array[0..maxN + 1,0..maxN + 1]of byte;
    i,j,n : integer;
    cou : integer = 0;
    col : byte;

procedure flood(ii,jj : integer);
begin
   if a[ii,jj] <> col then exit;
   a[ii,jj] := 0;
   flood(ii - 1,jj);
   flood(ii + 1,jj);
   flood(ii,jj - 1);
   flood(ii,jj + 1);
end;

begin
   readln(n);
   fillchar(a,sizeof(a),0);
   for i := 1 to n do
      for j := 1 to n do
         read(a[i,j]);
   for i := 1 to n do
      for j := 1 to n do
         if a[i,j] <> 0 then
            begin
               cou := cou + 1;
               col := a[i,j];
               flood(i,j);
            end;
   writeln(cou);
end.


вот ,вроде так


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



- Текстовая версия 18.07.2025 20:50
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"