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

Месса. Подсчитать общее количество рукопожатий. - C++

Восстановить пароль Регистрация
 
Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 123
17.07.2014, 08:49     Месса. Подсчитать общее количество рукопожатий. #1
Хорошей частью Римской католической мессы является обряд мира, когда люди обмениваются рукопожатием со своими соседями и говорят: "мир вам". Мирко нашел способ превратить этот ритуал в свою пользу.
Внутри церкви есть R рядов скамеек, в каждом ряду может сидеть не более S человек. Мы можем представить это как матрицу R х S, где каждый элемент представляет собой либо человека или пустое место. Предположим, что каждый человек пожимает руки всем своим соседям. Это означает, что соседи находятся в одном из восьми соседних элементов (если такой элемент существует):
Название: 28782.png
Просмотров: 43

Размер: 4.5 Кб
Дано расположение сидящих людей внутри церкви в момент, когда Мирко входит. Мирко, конечно, опоздал на утреннюю мессу и может выбрать такое свободное место, чтобы пожать руку как можно большему числу людей. Если свободных мест не осталось, Мирко просто откажется от этой идеи и придет на вечернюю мессу вместо этого. Предположим, что никто не входит в церковь после Мирко.
Рассчитайте общее количество рукопожатий данных в течение утренней мессы.
Первая строка входного файла содержит натуральные числа R и S (1 ≤ R, S ≤ 50), как указано в тексте.
Каждая из следующих строк R содержит S символов. Эти R х S символы представляют расположение людей на скамейках. Символ '.' (точка) представляет собой пустое место, символ 'o' (строчная латинская буква о) представляет собой человека.
Первая и единственная строка вывода должна содержать общее количество рукопожатий.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2014, 08:49     Месса. Подсчитать общее количество рукопожатий.
Посмотрите здесь:

26. Подсчитать количество букв "А" в предложении и общее количество букв. В тексте несколько строк. C++
C++ Подсчитать количество букв "А" в предложении и общее количество букв. В тексте несколько строк.
Подсчитать общее количество полученных результатов C++
C++ Подсчитать общее количество «счастливых» билетов
C++ Дана строка. Подсчитать общее колличество прописных и строчных латинских и русских букв и вывести на консоль количество
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Хедин
 Аватар для Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
17.07.2014, 09:26     Месса. Подсчитать общее количество рукопожатий. #2
Neotwalker, ну если я все посчитал правильно, то будет как то так. Не отрицаю, что можно и проще
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
#include <iostream>
 
using namespace std;
 
int getHello(int **a, int n, int m, int i, int j)
{
    int summ = 0;
    if (i < n-1)
    {
        if (j > 0 && a[i+1][j-1] != 0) summ++;
        if (a[i+1][j] != 0) summ++;
        if (j < m-1 && a[i+1][j+1] != 0) summ++;
    }
    if (j < m-1 && a[i][j+1] != 0) summ++;
    return summ;
}
 
int main()
{
    int n, m;
    cin >> n >> m;
    int **arr = new int*[n];
    for (int i = 0; i < n; i++)
        arr[i] = new int[m];
    for (int i = 0; i < n; i++)
    {
        cout << "Line " << i << endl;
        for (int j = 0; j < m; j++)
            cin >> arr[i][j];
    }
    int summ = 0;
    for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
    {
        if (arr[i][j] != 0) summ += getHello(arr, n, m, i, j);
    }
    cout << "Result: " << summ << endl;
    return 0;
}
Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 123
17.07.2014, 09:41  [ТС]     Месса. Подсчитать общее количество рукопожатий. #3
Спасибо, но вот как вводить по примеру?
Вот пример ввода:
Пример ввода 1

2 3
..o
o..

Пример вывода 1

2
Хедин
 Аватар для Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
17.07.2014, 09:48     Месса. Подсчитать общее количество рукопожатий. #4
Neotwalker, я делал в формате 1 - человек есть, 0 - человека нет. Можно в принципе изменить тип массива arr на символьный и прописать свои символы для обозначения наличия человека
Yandex
Объявления
17.07.2014, 09:48     Месса. Подсчитать общее количество рукопожатий.
Ответ Создать тему
Опции темы

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