Форум программистов, компьютерный форум CyberForum.ru

Рекурсия, вычислить площадь комнаты в квадратном лабиринте - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
sv011
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 25
03.12.2012, 23:21     Рекурсия, вычислить площадь комнаты в квадратном лабиринте #1
Требуется вычислить площадь комнаты в квадратном лабиринте.

Формат входных данных

В первой строке вводится число N – размер лабиринта (3 <= N <= 10). В следующих N строках задан лабиринт (‘.’ – пустая клетка, ‘*’ – стенка). И наконец, последняя строка содержит два числа – номер строки и столбца клетки, находящейся в комнате, площадь которой необходимо вычислить. Гарантируется, что эта клетка пустая и что лабиринт окружен стенками со всех сторон.

Формат выходных данных

Требуется вывести единственное число – количество пустых клеток в данной комнате.
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
#include <iostream>
using namespace std;
   
     int function(int n,char a[n][n],int x,int y){
     cnt=0;
     
     if(a[x][y]==".") cnt ++;
     return cnt;
     else return function(n,a[n][n],x,y-1);
     break;
     
     if(a[x][y]== "." ) cnt++;
     return cnt;
     else return fuction(n,a[n][n],x,y+1);
     break;
     
     if(a[x][y]== ".") cnt++;         
     return cnt;                    
     else return fuction(n,a[n][n],x-1,y);
     break; 
     
     if(a[x][y]== ".") cnt++;          
     return cnt;                    
     else return fuction(n,a[n][n],x+1,y);  
     break;
     }
       int main(){
       int n,x,y;
    
       cin>>n;
       char a[n][n];
 
       for(int i=1;i<=n;i++){
           for(int j=1;j<=n;j++){
              cin>>a[i][j];
           }
       }
       cout<<function(n,a[n][n],x,y);
return 0;
}
помогите найти ошибку!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 23:21     Рекурсия, вычислить площадь комнаты в квадратном лабиринте
Посмотрите здесь:

Два треугольника заданы координатами своих вершин A,B,C. Вычислить площадь треугольника и определить какой треугольник имеет большую площадь C++
Рекурсия(вычислить 1*2*3*...n+2*3*4*...(n-1)+3*4*5*(n-2)+...) C++
Рекурсия. Вычислить значение суммы C++
C++ Рекурсия (вычислить значение выражения)
C++ Область комнаты (рекурсия)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
adai123
Сообщений: n/a
09.12.2014, 18:49     Рекурсия, вычислить площадь комнаты в квадратном лабиринте #2
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
#include<iostream>
#include<cmath>
#include<stdio.h>
using namespace std;
char b[1000][1000];
int l=0;
void kol (int x,int y){
 
if(b[x][y]=='.'){
    l++;
    b[x][y]='*';
}
 
if(b[x-1][y]=='.'){
    return kol(x-1,y);
}
 
if(b[x+1][y]=='.'){
    return kol(x+1,y);
}
 
if(b[x][y-1]=='.'){
    return kol(x,y-1);
}
 
if(b[x][y+1]=='.'){
    return kol(x,y+1);
}
}
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int n,i,j,x,y;
cin>>n;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            cin>>b[i][j];
        }
    }
    cin>>x>>y;
    kol(x,y);
    cout << l;
    return 0;
}
011
9 / 9 / 0
Регистрация: 28.11.2013
Сообщений: 146
14.03.2015, 17:23     Рекурсия, вычислить площадь комнаты в квадратном лабиринте #3
adai123,
Например на таком наборе входных данных ответ неверный:
5
*****
**..*
*.*.*
*..**
*****
2 4
Ваш код выдает 2. Хотя правильный ответ 3.

Может, кто подскажет в чем ошибка у adai123?

условие задачи в оригинале
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,340
14.03.2015, 18:35     Рекурсия, вычислить площадь комнаты в квадратном лабиринте #4
Цитата Сообщение от 011 Посмотреть сообщение
в чем ошибка у adai123
Строки 15, 19, 23, 27: return не нужен.
И все эти 4 условия должны выполняться внутри первого.

Добавлено через 2 минуты
Так будет проще:
C++
1
2
3
4
5
6
7
8
9
10
void kol(int x, int y){
    if (b[x][y] == '.'){
        l++;
        b[x][y] = '*';
        kol(x - 1, y);
        kol(x + 1, y);
        kol(x, y - 1);
        kol(x, y + 1);
    }
}
ProgaPash
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 2
27.12.2015, 13:35     Рекурсия, вычислить площадь комнаты в квадратном лабиринте #5
Ты создал массив типа char)А надо int)
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,340
27.12.2015, 13:44     Рекурсия, вычислить площадь комнаты в квадратном лабиринте #6
Цитата Сообщение от ProgaPash Посмотреть сообщение
Ты создал массив типа char)А надо int)
Не надо. Там бы и bool хватило, если на то пошло.
Yandex
Объявления
27.12.2015, 13:44     Рекурсия, вычислить площадь комнаты в квадратном лабиринте
Ответ Создать тему
Опции темы

Текущее время: 21:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru