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

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

Войти
Регистрация
Восстановить пароль
 
Neotwalker
21 / 1 / 0
Регистрация: 22.12.2013
Сообщений: 132
#1

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

17.07.2014, 08:49. Просмотров 375. Ответов 3
Метки нет (Все метки)

Хорошей частью Римской католической мессы является обряд мира, когда люди обмениваются рукопожатием со своими соседями и говорят: "мир вам". Мирко нашел способ превратить этот ритуал в свою пользу.
Внутри церкви есть 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     Месса. Подсчитать общее количество рукопожатий.
Посмотрите здесь:

Подсчитать общее количество содержащихся в строке строчных латинских и русских букв C++
Подсчитать общее количество полученных результатов C++
C++ Подсчитать общее количество «счастливых» билетов
C++ Подсчитать общее количество букв в заданном тексте
C++ Дана строка. Подсчитать общее количество содержащихся в ней строчных латинских и русских букв
Подсчитать общее количество строчных латинских и русских букв, содержащихся в строке C++
Подсчитать общее число элементов в стеках C++
C++ Подсчитать общее вхождение в строку латинских букв
Напечатать фамилии, имена и подсчитать общее число жителей, родившихся после 1990 года C++
C++ Подсчитать общее количество букв в словесной записи чисел от 1 до 1000
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
Сообщений: 132
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:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru