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

Расчет краски на лабиринт - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание нескольких стеков http://www.cyberforum.ru/cpp-beginners/thread342698.html
//--------------------------------------------------------------------------- #pragma hdrstop #include <tchar.h> #include <stdlib.h> #include <iostream.h> #include <dos.h>...
C++ Сохранение матриц больших размеров в типизированный файл Проблема: есть большой двумерный массив (double). Пытаюсь сохранить его в типизированный файл (а затем считать в другой массив). В файл сохраняется только некоторая часть (до 58 элемента, в частном... http://www.cyberforum.ru/cpp-beginners/thread342662.html
два ++ C++
Что означает "++" что ето за операция в С++Builder очень надо узнать Напишите кто нибудь.
C++ Тетрис и многопоточность
Здравствуйте. Взялся я за тетрис, немного написал, а потом понял, что мне нужны два потока. Вот зачем: у меня игровое поле — двумерный массив . Фигура представленна массивом . В то время, как один...
C++ Подскажите, как должно выглядеть это задание? http://www.cyberforum.ru/cpp-beginners/thread342624.html
Разработайте приложение rle.exe, выполняющее RLE-компрессию бинарных файлов с сильно разреженным содержимым, а также декомпрессию упакованных ею файлов. Необходимо реализовать следующий принцип...
C++ string народ я вот решаю задачу .. вводишь в файл input.txt латинскую букву...а в файл output.txt выводить должно справа стоящую на клавиатури букву. вот код: #include <fstream> #include <string>... подробнее

Показать сообщение отдельно
dmital
1 / 1 / 0
Регистрация: 18.02.2011
Сообщений: 20

Расчет краски на лабиринт - C++

17.08.2011, 12:31. Просмотров 306. Ответов 3
Метки (Все метки)

Условие задачи тут

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
#include <iostream>
using namespace std;
void paint(int i, int j) {
 if (a[i][j]=='.') {
a[i][j]='$';
paint(i+1,j);
paint(i-1,j);
paint(i,j+1);
paint(i,j-1);
}
}
int nhood(int s, int n, int m) {
if (a[n+1][m]=='#') s++;
if (a[n-1][m]=='#') s++;
if (a[n][m+1]=='#') s++;
if (a[n][m-1]=='#') s++;
return s;
}
int main() {
int n,i,j,s=0;
cin>>n;
char a[n+2][n+2];
for (i=0;i<=n+1; i++)
 for (j=0; j<=n+1; j++)
  a[i][j]='#';
for (i=1; i<=n; i++) 
 for (j=1; j<=n; j++)
 cin>>a[i][j];
paint(1,1);
paint(n,n);
for(i=1; i<=n; i++)
 for(j=1; j<=n; j++)
   if (a[i][j]=='$')
     nhood(s,i,j);
cout<<s*9-4;
    
return 0;
}
Сначала заполняю массив размера n+2*n+2 препятствиями, потом записываю в него входные данные. После этого нахожу 4-связные области с помощью функции paint, применяя ее к первой и последней клеткам. Когда области найдены, нахожу количество стен, которые нужно покрасить, для этого нахожу все пары область-стена. При выводе умножаю количество стен на 9 и вычитаю 4, как и требуется в задаче.

Прошу подсказать, что нужно исправить, чтобы функции корректно работали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.