Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.60
Трой
0 / 0 / 0
Регистрация: 03.06.2009
Сообщений: 7
#1

Надо найти "острова" на квадратной матрице - C++

03.06.2009, 01:26. Просмотров 3767. Ответов 18
Метки нет (Все метки)

Собственно ниже условие и я вроде все понял, но как это сделать...
Буду очень благодарен за Вашу помощь.
Каждый элемент квадратной матрицы размерности NxN равен нулю либо единице. Найдите количество "островов", образованных единицами. Под "островом" понимается группа единиц, со всех сторон окруженная нулями (или краями матрицы). Единицы относятся к одному "острову", если из одной из них можно перейти к другой, "наступая" на единицы, расположенные в соседних клетках. Соседними являются клетки, граничащие по горизонтали или вертикали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2009, 01:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Надо найти "острова" на квадратной матрице (C++):

Найти номер последней по порядку строки в матрице, содержащей наибольшее количество букв "ш", "щ" - C++
Нужен код к этому условию, пожалуйста. Дана символьная матрица размера 13х18. Найти номер последней по порядку строки,содержащей...

Вывести на экран фразу "Мне n лет", учитывая что при некоторых значениях n слово "лет" надо заменить на "год" - C++
дано натуральное число n. Вывести на экран фразу "Мне n лет", учитывая что при некоторых значениях n слово "лет" надо заменить на "год" или...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс "вентилятор" содержащий в себе классы:...

18
Трой
0 / 0 / 0
Регистрация: 03.06.2009
Сообщений: 7
09.06.2009, 20:50  [ТС] #16
Patch
Этим заниматься я буду позже, тобиш летом когда время будет, а на данный момент у меня сроки поджимают и сделать эту задачу надо срочно. В то же время денег на счету нету. Даже на балансе трнета -полтора бакса и сижу в кредите.
Не думал, что так сложно будет написать код за так. Алчных и жадных людей стало много. Эх Вы!
0
Evg
Эксперт CАвтор FAQ
18915 / 6874 / 503
Регистрация: 30.03.2009
Сообщений: 19,354
Записей в блоге: 30
09.06.2009, 21:52 #17
Цитата Сообщение от Трой Посмотреть сообщение
Не думал, что так сложно будет написать код за так. Алчных и жадных людей стало много. Эх Вы!
А ты не думал о том, что людям твои проблемы мягко говоря до фонара (т.е. проблемы негроф шерифа не е$ут) и что задача в общем-то не простая и надо помудохаться, чтобы её написать и отладить. Или ты считаешь, что народ на форуме тусутеся только для того, чтобы тебе программу написать?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <stdio.h>
#include <stdlib.h>
 
#define DEBUG 1
 
#define N 6
int a[N][N] =
{
 { 1, 0, 1, 1, 0, 1 },
 { 0, 1, 1, 0, 1, 0 },
 { 1, 0, 1, 0, 1, 1 },
 { 1, 1, 1, 0, 0, 1 },
 { 0, 0, 1, 1, 0, 1 },
 { 1, 1, 0, 1, 1, 0 },
};
 
/* Внутренний контроль */
#define ASSERT(x) \
  if (!(x)) abort ();
 
/* Рекурсивная процедура стирания острова, содержащего точку (x,y) */
static void
delete_island (int x, int y)
{
  int dx[4] = { -1, 0, 1, 0 };
  int dy[4] = { 0, -1, 0, 1 };
  int i, x1, y1;
 
  ASSERT (a[x][y] == 1);
 
  /* Сразу сотрём данную точку, чтобы повторно сюда не зайти
   * и не зациклиться */
  a[x][y] = 0;
 
  /* Обходим четырёх соседей и удаляем их */
  for (i = 0; i < 4; i++)
    {
      /* Координаты соседа */
      x1 = x + dx[i];
      y1 = y + dy[i];
 
      /* Проверяем, что сосед попадает в поле и удаляем */
      if (x1 >= 0 && x1 < N && y1 >= 0 && y1 < N)
        if (a[x1][y1] == 1)
          delete_island (x1, y1);
    }
}
 
static void
print (void)
{
  int i, j;
 
  printf ("--------\n");
 
  for (j = 0; j < N; j++)
    {
      for (i = 0; i < N; i++)
        printf ("%d", a[i][j]);
 
      printf ("\n");
    }
}
 
int
main (void)
{
  int count = 0;
  int i, j;
 
  /* Контроль, что матрицу не перекосило */
  ASSERT (sizeof(a) == (sizeof(int) * N * N));
 
  if (DEBUG)
    print ();
 
  for (j = 0; j < N; j++)
    for (i = 0; i < N; i++)
      if (a[i][j] == 1)
        {
          /* Удаляем встретившийся остров */
          delete_island (i, j);
          count++;
 
          if (DEBUG)
            print ();
        }
 
  printf ("Number of islands: %d\n", count);
 
  return 0;
}
2
Трой
0 / 0 / 0
Регистрация: 03.06.2009
Сообщений: 7
10.06.2009, 22:52  [ТС] #18
Evg
Огромное, человеческое тебе спасибо!
зы За предыдущий пост извеняюсь, погоречился.
0
Evg
Эксперт CАвтор FAQ
18915 / 6874 / 503
Регистрация: 30.03.2009
Сообщений: 19,354
Записей в блоге: 30
10.06.2009, 22:57 #19
Цитата Сообщение от Трой Посмотреть сообщение
зы За предыдущий пост извеняюсь, погоречился.
С каждым бывает
0
10.06.2009, 22:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2009, 22:57
Привет! Вот еще темы с ответами:

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Создать иерархию классов "Фирма", "Бухгалтер", "Сотрудник", "Зарплата" - C++
Само по себе понятие &quot;зарплата&quot; не особенно конкретное: оно включает и почасовую, и ставочную зарплату, и комиссионные, и процент с продаж....

Структура «Преподаватель» с полями "ФИО", "стаж", "категория", "нагрузка" - C++
Функция - расчёт зарплаты по нагрузке и оплате часа для определенной категории. Категория Оплата часа Вторая 150 Первая 200 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru