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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ работа со строками. http://www.cyberforum.ru/cpp-beginners/thread37992.html
Здравствуйте, я студент 1го курса, попросили решить задачки на C++, а я с ним как то не очень.буду рад любой помоши, задачи выкладываю ниже Задача 55 Переформировать матрицу таким образом, чтобы...
C++ нахождение минимальных слов Помогите пожалуйста нужна програмка для нахождение минимальных слов в строке и подсчёта их количества :help: слово минимальной длинны (самое короткое, состоящее из наименьшего количества... http://www.cyberforum.ru/cpp-beginners/thread37989.html
Графики функций C++
В курсовой задание построить графики функций входного и выходного сигналов времени Входной: Uvh=U/exp(pow(a,2.0)*pow(t,2.0)) Выходной: for(i=0;i<N;i++) {if (Uvh<0) Uvih=0; else if...
C++ Ошибка с дебагом...
есть код программы #include "stdafx.h" #include <iostream> #include <iomanip> #include <conio.h> #include <string.h> using namespace std; void Choice(); int c=0; //Глобальная...
C++ Максимальный элемент массива http://www.cyberforum.ru/cpp-beginners/thread37954.html
#include <stdio.h> #include <conio.h> main() { int n,i; int a; printf("\n Vvedite kolichestvo elementov v massive \n"); scanf("%d",&n); printf("Vedite %d elementov massiva \n",n);...
C++ Работа с файлом и Обратная матрица Срочно нужна помошь! Практика горит! Вот задачи: 1)Создать файл, содержащий текст на английском языке. Выбрать из него те символы, которые встречаются в нем только один раз, в том порядке, в... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
18248 / 6373 / 438
Регистрация: 30.03.2009
Сообщений: 17,643
Записей в блоге: 28
03.06.2009, 09:56
Возможно, что мой вариант чем-то совпадает с вариантом mikutu, но его объяснения я затруднился понять. Метод мой заключается в следующем. Ищем первую попавшуюся единицу и запускаем процесс, который удалит остров (содержащий данную единицу) с поля. После удаления острова увеличиваем счётчик и ищем слудующую единицу и т.д. Удалять острова можо на оргинальном массиве, а можно и сделать копию

Рекурсивная процедура удаления выглядит примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int a[10][10]; // <--- наш массив
 
// Удаление острова, содержащего поле x, y
void
delete_island (int x, y)
{
  // Для внутреннего контроля (чтобы убедиться, что мы всё делаем правильно)
  if (a[x][y] != 1)
    abort ();
 
  // Сразу сотрём данную точку, чтобы повторно сюда не зайти и не зациклиться
  a[x][y] = 0;
 
  // Обходим четырёх соседей данной точки, учитывая границы поля
  // Предполагая, что координаты соседа x1, y1, нужно на каждого
  // соседа запутить код
  if (a[x1][y1] == 1)
    delete_island (x1, y1);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru