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

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

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

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

03.12.2012, 23:21. Просмотров 2259. Ответов 5
Метки нет (Все метки)

Требуется вычислить площадь комнаты в квадратном лабиринте.

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

В первой строке вводится число 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;
}
помогите найти ошибку!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 23:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рекурсия, вычислить площадь комнаты в квадратном лабиринте (C++):

Область комнаты (рекурсия) - C++
Здраствуйте. помогите решить задачу площадь комнаты Ваша задача написать программу, которая найдет площадь комнаты в данном квадратный...

Рекурсия (не могу из нее выйти) поиска пути в лабиринте - C++
Добрый день, друзья! Пытаюсь реализовать программу, которая бы находила путь в лабиринте(интовый массив, элемент =5 точка входа,...

Какое количество ковров необходимо приобрести, чтобы максимально накрыть площадь комнаты - C++
Чебурашка решил купить ковры, чтобы застелить комнату, в которой он жил вместе с Геной. Их прямоугольная комната оказалась размерами а х b,...

Вычислить площадь многоугольника с использованием функции,которая определяет площадь по координатам его вершин - C++
Народ помогите пож нужно очень срочно. совсем запутался с этим задание,буду благодарен за помощь. Вычислить площадь многоугольника с...

Два треугольника заданы координатами своих вершин A,B,C. Вычислить площадь треугольника и определить какой треугольник имеет большую площадь - C++
Два треугольника заданы координатами своих вершин A,B,C. Вычислить площадь треугольника и определить какой треугольник имеет большую...

Площадь квадрата равна S. Вычислить сторону квадрата а, диагональ d и площадь S1 описанного около этого квадрата круга - C++
Напишите код в C++ Пожалуйста :confusion:

5
adai123
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
Сообщений: 152
14.03.2015, 17:23 #3
adai123,
Например на таком наборе входных данных ответ неверный:
5
*****
**..*
*.*.*
*..**
*****
2 4
Ваш код выдает 2. Хотя правильный ответ 3.

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

условие задачи в оригинале
0
nonedark2008
931 / 670 / 147
Регистрация: 28.07.2012
Сообщений: 1,828
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);
    }
}
1
ProgaPash
0 / 0 / 0
Регистрация: 27.12.2015
Сообщений: 2
27.12.2015, 13:35 #5
Ты создал массив типа char)А надо int)
0
nonedark2008
931 / 670 / 147
Регистрация: 28.07.2012
Сообщений: 1,828
27.12.2015, 13:44 #6
Цитата Сообщение от ProgaPash Посмотреть сообщение
Ты создал массив типа char)А надо int)
Не надо. Там бы и bool хватило, если на то пошло.
0
27.12.2015, 13:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2015, 13:44
Привет! Вот еще темы с ответами:

Рекурсия(вычислить 1*2*3*...n+2*3*4*...(n-1)+3*4*5*(n-2)+...) - C++
дано натуральное число n. вычислить 1*2*3*...n+2*3*4*...(n-1)+3*4*5*(n-2)+... Очень срочно!! Заранее спасибо!!

Рекурсия: вычислить значение выражения - C++
Ребят, помогите минимально. Принцип рекурсии понимаю, как использовать не особо. Заранее, спасибо. Задание: Описать функции для...

Рекурсия (вычислить значение выражения) - C++
В универе дали задачку, просто так ее можно сделать, но нужно пользоваться рекурсией, а с ней я, черт возьми, никак не могу разобраться( ...

Рекурсия: вычислить сумму ряда - C++
Используя рекурсивный вызов функции вычислить с заданной точностью сумму ряда: \sum_{n=1} \frac{n!{x}^{n}}{{(n+1)}^{n}}. Прошу написать...


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

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

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