С++-Wise Man walks through a room of size n×m cells. A certain amount of gold is placed in each cell of the room

  • 33
С++-Wise Man walks through a room of size n×m cells. A certain amount of gold is placed in each cell of the room. As the Wise Man passes through a cell, he takes all the gold from it. Calculate how much gold he collected, knowing the room layout and the Wise Man"s route. It is not guaranteed that the Wise Man did not pass through the same cell more than once. Input: The input data describes the room layout: first, the number of rows n, then the number of columns m (1≤n≤20, 1≤m≤20). Then, n lines of m numbers each are written - the amount of gold in each cell (a number from 0 to 50). Afterwards,
Антонович
29
Для решения этой задачи, мы можем использовать двумерный массив для представления расположения комнаты и золота в каждой ячейке. Затем, мы будем перемещаться через комнату в соответствии с маршрутом Мудрого Человека и собирать золото по пути. Вот подробное решение:

cpp
#include
#include

using namespace std;

int main() {
int n, m;
cin >> n >> m;

// Создаем двумерный массив для представления комнаты
vector> room(n, vector(m));

// Вводим количество золота в каждой ячейке
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> room[i][j];
}
}

// Вводим маршрут Мудрого Человека
vector> route;
int x, y;
while (cin >> x >> y) {
route.push_back({x, y});
}

int totalGold = 0;

// Перемещаемся по комнате согласно маршруту и собираем золото
for (auto cell : route) {
int row = cell.first;
int col = cell.second;
totalGold += room[row][col];
room[row][col] = 0; // Убираем золото из ячейки
}

cout << "Мудрый Человек собрал " << totalGold << " золота." << endl;

return 0;
}


Давайте разберем код:

1. Мы сначала объявляем переменные `n` и `m` для хранения количества строк и столбцов в комнате соответственно.

2. Затем, мы создаем двумерный вектор `room` размером `n x m`, чтобы представить комнату и золото в каждой ячейке.

3. Мы заполняем `room` вводом количества золота в каждой ячейке с помощью двух вложенных циклов `for`.

4. Мы создаем вектор `route`, чтобы хранить маршрут Мудрого Человека. Мы вводим координаты каждой ячейки маршрута и добавляем их в вектор `route` до тех пор, пока есть входные данные.

5. Мы инициализируем переменную `totalGold` нулем для отслеживания собранного золота.

6. Затем, мы переходим по комнате в соответствии с маршрутом Мудрого Человека, добавляя количество золота в каждой посещенной ячейке к общему золоту и обнуляя золото в ячейке.

7. Наконец, мы печатаем общее количество собранного золота.

Например, если ввод будет следующим:


3 3
1 2 3
4 5 6
7 8 9
0 0
0 1
1 0
1 1
2 2


то вывод будет:


Мудрый Человек собрал 21 золота.


Таким образом, этот код решает задачу, считывая данные о расположении комнаты и золоте, а затем суммирует количество золота по мере перемещения по маршруту Мудрого Человека.