Автор24

Информация о работе

Подробнее о работе

Страница работы

С++ https://informatics.mccme.ru/ Задача №2003. Цивилизация

  • 1 страниц
  • 2018 год
  • 20 просмотров
  • 2 покупки
Автор работы

masterabite

Помогаю с задачами по программированию на C++/Си/С#/Java/Pascal.

100 ₽

Работа будет доступна в твоём личном кабинете после покупки

Гарантия сервиса Автор24

Уникальность не ниже 50%

Фрагменты работ

Карта мира в компьютерной игре “Цивилизация” версии 1 представляет собой прямоугольник, разбитый на квадратики. Каждый квадратик может иметь один из нескольких возможных рельефов, для простоты ограничимся тремя видами рельефов - поле, лес и вода. Поселенец перемещается по карте, при этом на перемещение в клетку, занятую полем, необходима одна единица времени, на перемещение в лес - две единицы времени, а перемещаться в клетку с водой нельзя.

У вас есть один поселенец, вы определили место, где нужно построить город, чтобы как можно скорее завладеть всем миром. Найдите маршрут переселенца, приводящий его в место строительства города, требующий минимального времени. На каждом ходе переселенец может перемещаться в клетку, имеющую общую сторону с той клеткой, где он сейчас находится.

Входные данные
Во входном файле записаны два натуральных числа N и M, не превосходящих 1000 - размеры карты мира (N - число строк в карте, M - число столбцов). Затем заданы координаты начального положения поселенца x и y, где x - номер строки, y - номер стролбца на карте (1 ≤ x ≤ N, 1 ≤ y ≤ M), строки нумеруются сверху вниз, столбцы - слева направо. Затем аналогично задаются координаты клетки, куда необходимо привести поселенца.

Далее идет описание карты мира в виде N строк, каждая из которых содержит M символов. Каждый символ может быть либо “.” (точка), обозначающим поле, либо “W”, обозначающим лес, либо “#”, обозначающим воду. Гарантируется, что начальная и конечная клетки пути переселенца не являются водой.

Выходные данные
В первой строке выходного файла выведите количество единиц времени, необходимое для перемещения поселенца (перемещение в клетку с полем занимает 1 единицу времени, перемещение в клетку с лесом - 2 единицы времени). Во второй строке выходного файла выведите последовательность символов, задающих маршрут переселенца. Каждый символ должен быть одним из четырех следующих: “N” (движение вверх), “E” (движение вправо), “S” (движение вниз), “W” (движение влево). Если таких маршрутов несколько, выведите любой из них.

Если дойти из начальной клетки в конечную невозможно, выведите число -1.

#include
#include
#include

using namespace std;

const int dx[] = {1, -1, 0, 0};
const int dy[] = {0, 0, 1, -1};
const long long INF = 1e10;
long long n, m, x1, x2, y1, y2, a[1009][1009], ans[1009][1009], p1[1009][1009];
char k[1009][1009];

queue qx, qy;
vector answer;

void bfs(int x3, int y3)
{
qx.push(x3);
qy.push(y3);
k[x3][y3] = 'Q';

while (!qx.empty())
{

int x = qx.front(),y = qy.front();

qx.pop();
qy.pop();

for (int i = 0; i < 4; i++)
if (a[x + dx[i]][y + dy[i]] > 0 && a[x + dx[i]][y + dy[i]] + ans[x][y] < ans[x + dx[i]][y + dy[i]])
{
qx.push(x + dx[i]);
qy.push(y + dy[i]);
p1[x + dx[i]][y + dy[i]] = 10000 * x + y;

if (dx[i] == 1 && dy[i] == 0)
k[x + dx[i]][y + dy[i]] = 'S';

if (dx[i] == -1 && dy[i] == 0)
k[x + dx[i]][y + dy[i]] = 'N';

if (dx[i] == 0 && dy[i] == 1)
k[x + dx[i]][y + dy[i]] = 'E';

if (dx[i] == 0 && dy[i] == -1)
k[x + dx[i]][y + dy[i]] = 'W';

if (a[x + dx[i]][y + dy[i]] + ans[x][y] < ans[x + dx[i]][y + dy[i]])
ans[x + dx[i]][y + dy[i]] = a[x + dx[i]][y + dy[i]] + ans[x][y];
}
}
}

int main()
{
cin >> n >> m >> x1 >> y1 >> x2 >> y2;

for (int i = 1; i x;

ans[i][j] = INF;
if (x == '.')
a[i][j] = 1;

if (x == 'W')
a[i][j] = 2;
}

ans[x1][y1] = 0;

bfs(x1, y1);

if (ans[x2][y2] != INF)
{
cout

Задача №2003. Цивилизация
Карта мира в компьютерной игре “Цивилизация” версии 1 представляет собой прямоугольник, разбитый на квадратики. Каждый квадратик может иметь один из нескольких возможных рельефов, для простоты ограничимся тремя видами рельефов - поле, лес и вода. Поселенец перемещается по карте, при этом на перемещение в клетку, занятую полем, необходима одна единица времени, на перемещение в лес - две единицы времени, а перемещаться в клетку с водой нельзя.

У вас есть один поселенец, вы определили место, где нужно построить город, чтобы как можно скорее завладеть всем миром. Найдите маршрут переселенца, приводящий его в место строительства города, требующий минимального времени. На каждом ходе переселенец может перемещаться в клетку, имеющую общую сторону с той клеткой, где он сейчас находится.

Входные данные
Во входном файле записаны два натуральных числа N и M, не превосходящих 1000 - размеры карты мира (N - число строк в карте, M - число столбцов). Затем заданы координаты начального положения поселенца x и y, где x - номер строки, y - номер стролбца на карте (1 ≤ x ≤ N, 1 ≤ y ≤ M), строки нумеруются сверху вниз, столбцы - слева направо. Затем аналогично задаются координаты клетки, куда необходимо привести поселенца.

Далее идет описание карты мира в виде N строк, каждая из которых содержит M символов. Каждый символ может быть либо “.” (точка), обозначающим поле, либо “W”, обозначающим лес, либо “#”, обозначающим воду. Гарантируется, что начальная и конечная клетки пути переселенца не являются водой.

Выходные данные
В первой строке выходного файла выведите количество единиц времени, необходимое для перемещения поселенца (перемещение в клетку с полем занимает 1 единицу времени, перемещение в клетку с лесом - 2 единицы времени). Во второй строке выходного файла выведите последовательность символов, задающих маршрут переселенца. Каждый символ должен быть одним из четырех следующих: “N” (движение вверх), “E” (движение вправо), “S” (движение вниз), “W” (движение влево). Если таких маршрутов несколько, выведите любой из них.

Если дойти из начальной клетки в конечную невозможно, выведите число -1.

https://informatics.mccme.ru/

Форма заказа новой работы

Не подошла эта работа?

Закажи новую работу, сделанную по твоим требованиям

Оставляя свои контактные данные и нажимая «Заказать Решение задач», я соглашаюсь пройти процедуру регистрации на Платформе, принимаю условия Пользовательского соглашения и Политики конфиденциальности в целях заключения соглашения.

Фрагменты работ

Карта мира в компьютерной игре “Цивилизация” версии 1 представляет собой прямоугольник, разбитый на квадратики. Каждый квадратик может иметь один из нескольких возможных рельефов, для простоты ограничимся тремя видами рельефов - поле, лес и вода. Поселенец перемещается по карте, при этом на перемещение в клетку, занятую полем, необходима одна единица времени, на перемещение в лес - две единицы времени, а перемещаться в клетку с водой нельзя.

У вас есть один поселенец, вы определили место, где нужно построить город, чтобы как можно скорее завладеть всем миром. Найдите маршрут переселенца, приводящий его в место строительства города, требующий минимального времени. На каждом ходе переселенец может перемещаться в клетку, имеющую общую сторону с той клеткой, где он сейчас находится.

Входные данные
Во входном файле записаны два натуральных числа N и M, не превосходящих 1000 - размеры карты мира (N - число строк в карте, M - число столбцов). Затем заданы координаты начального положения поселенца x и y, где x - номер строки, y - номер стролбца на карте (1 ≤ x ≤ N, 1 ≤ y ≤ M), строки нумеруются сверху вниз, столбцы - слева направо. Затем аналогично задаются координаты клетки, куда необходимо привести поселенца.

Далее идет описание карты мира в виде N строк, каждая из которых содержит M символов. Каждый символ может быть либо “.” (точка), обозначающим поле, либо “W”, обозначающим лес, либо “#”, обозначающим воду. Гарантируется, что начальная и конечная клетки пути переселенца не являются водой.

Выходные данные
В первой строке выходного файла выведите количество единиц времени, необходимое для перемещения поселенца (перемещение в клетку с полем занимает 1 единицу времени, перемещение в клетку с лесом - 2 единицы времени). Во второй строке выходного файла выведите последовательность символов, задающих маршрут переселенца. Каждый символ должен быть одним из четырех следующих: “N” (движение вверх), “E” (движение вправо), “S” (движение вниз), “W” (движение влево). Если таких маршрутов несколько, выведите любой из них.

Если дойти из начальной клетки в конечную невозможно, выведите число -1.

#include
#include
#include

using namespace std;

const int dx[] = {1, -1, 0, 0};
const int dy[] = {0, 0, 1, -1};
const long long INF = 1e10;
long long n, m, x1, x2, y1, y2, a[1009][1009], ans[1009][1009], p1[1009][1009];
char k[1009][1009];

queue qx, qy;
vector answer;

void bfs(int x3, int y3)
{
qx.push(x3);
qy.push(y3);
k[x3][y3] = 'Q';

while (!qx.empty())
{

int x = qx.front(),y = qy.front();

qx.pop();
qy.pop();

for (int i = 0; i < 4; i++)
if (a[x + dx[i]][y + dy[i]] > 0 && a[x + dx[i]][y + dy[i]] + ans[x][y] < ans[x + dx[i]][y + dy[i]])
{
qx.push(x + dx[i]);
qy.push(y + dy[i]);
p1[x + dx[i]][y + dy[i]] = 10000 * x + y;

if (dx[i] == 1 && dy[i] == 0)
k[x + dx[i]][y + dy[i]] = 'S';

if (dx[i] == -1 && dy[i] == 0)
k[x + dx[i]][y + dy[i]] = 'N';

if (dx[i] == 0 && dy[i] == 1)
k[x + dx[i]][y + dy[i]] = 'E';

if (dx[i] == 0 && dy[i] == -1)
k[x + dx[i]][y + dy[i]] = 'W';

if (a[x + dx[i]][y + dy[i]] + ans[x][y] < ans[x + dx[i]][y + dy[i]])
ans[x + dx[i]][y + dy[i]] = a[x + dx[i]][y + dy[i]] + ans[x][y];
}
}
}

int main()
{
cin >> n >> m >> x1 >> y1 >> x2 >> y2;

for (int i = 1; i x;

ans[i][j] = INF;
if (x == '.')
a[i][j] = 1;

if (x == 'W')
a[i][j] = 2;
}

ans[x1][y1] = 0;

bfs(x1, y1);

if (ans[x2][y2] != INF)
{
cout

Задача №2003. Цивилизация
Карта мира в компьютерной игре “Цивилизация” версии 1 представляет собой прямоугольник, разбитый на квадратики. Каждый квадратик может иметь один из нескольких возможных рельефов, для простоты ограничимся тремя видами рельефов - поле, лес и вода. Поселенец перемещается по карте, при этом на перемещение в клетку, занятую полем, необходима одна единица времени, на перемещение в лес - две единицы времени, а перемещаться в клетку с водой нельзя.

У вас есть один поселенец, вы определили место, где нужно построить город, чтобы как можно скорее завладеть всем миром. Найдите маршрут переселенца, приводящий его в место строительства города, требующий минимального времени. На каждом ходе переселенец может перемещаться в клетку, имеющую общую сторону с той клеткой, где он сейчас находится.

Входные данные
Во входном файле записаны два натуральных числа N и M, не превосходящих 1000 - размеры карты мира (N - число строк в карте, M - число столбцов). Затем заданы координаты начального положения поселенца x и y, где x - номер строки, y - номер стролбца на карте (1 ≤ x ≤ N, 1 ≤ y ≤ M), строки нумеруются сверху вниз, столбцы - слева направо. Затем аналогично задаются координаты клетки, куда необходимо привести поселенца.

Далее идет описание карты мира в виде N строк, каждая из которых содержит M символов. Каждый символ может быть либо “.” (точка), обозначающим поле, либо “W”, обозначающим лес, либо “#”, обозначающим воду. Гарантируется, что начальная и конечная клетки пути переселенца не являются водой.

Выходные данные
В первой строке выходного файла выведите количество единиц времени, необходимое для перемещения поселенца (перемещение в клетку с полем занимает 1 единицу времени, перемещение в клетку с лесом - 2 единицы времени). Во второй строке выходного файла выведите последовательность символов, задающих маршрут переселенца. Каждый символ должен быть одним из четырех следующих: “N” (движение вверх), “E” (движение вправо), “S” (движение вниз), “W” (движение влево). Если таких маршрутов несколько, выведите любой из них.

Если дойти из начальной клетки в конечную невозможно, выведите число -1.

https://informatics.mccme.ru/

Купить эту работу

С++ https://informatics.mccme.ru/ Задача №2003. Цивилизация

100 ₽

или заказать новую

Лучшие эксперты сервиса ждут твоего задания

от 20 ₽

Гарантии Автор24

Изображения работ

Страница работы
Страница работы
Страница работы

Понравилась эта работа?

или

12 мая 2020 заказчик разместил работу

Выбранный эксперт:

Автор работы
masterabite
5
Помогаю с задачами по программированию на C++/Си/С#/Java/Pascal.
Купить эту работу vs Заказать новую
2 раза Куплено Выполняется индивидуально
Не менее 40%
Исполнитель, загружая работу в «Банк готовых работ» подтверждает, что уровень оригинальности работы составляет не менее 40%
Уникальность Выполняется индивидуально
Сразу в личном кабинете Доступность Срок 1—4 дня
100 ₽ Цена от 20 ₽

5 Похожих работ

Решение задач

Задача про пароход (линейное программирование)

Уникальность: от 40%
Доступность: сразу
220 ₽
Решение задач

2016_12_26 КПИ Программирование Вариант 2

Уникальность: от 40%
Доступность: сразу
46 ₽
Решение задач

20 решенных задач по программированию на темы "Двумерные матрицы" и другие

Уникальность: от 40%
Доступность: сразу
300 ₽
Решение задач

задачи.одномерные и двумерные массивы.с++

Уникальность: от 40%
Доступность: сразу
200 ₽
Решение задач

решение 22 задач по программированию.с++

Уникальность: от 40%
Доступность: сразу
200 ₽

Отзывы студентов

Отзыв Татьяна_5085 об авторе masterabite 2015-10-29
Решение задач

ВСЕ ОТЛИЧНО

Общая оценка 5
Отзыв VictoryDor об авторе masterabite 2017-10-30
Решение задач

Спасибо большое. Быстро и качественно! Рекомендую.

Общая оценка 5
Отзыв artisss об авторе masterabite 2017-02-10
Решение задач

Очень хороший автор, который быстро понимает, то что нужно. Ответственно и в срок выполнил поставленную задачу с написанием программы.

Общая оценка 5
Отзыв Ксу об авторе masterabite 2017-10-31
Решение задач

Спасибо,выполнено в кратчайший срок,задание сделано на отлично,Рекомендую

Общая оценка 5

другие учебные работы по предмету

Готовая работа

Разработка IP-сервера для обеспечения IP-телефонии во внутренних сетях связи

Уникальность: от 40%
Доступность: сразу
2240 ₽
Готовая работа

Обработка и визуализация данных при моделировании электрических машин с использованием программного комплекса «Моделирование в технических устройствах

Уникальность: от 40%
Доступность: сразу
3000 ₽
Готовая работа

Разработка системы для измерения уровня жидкости в резервуарах промышленных масштабов на основе ультразвукового уровнемера.

Уникальность: от 40%
Доступность: сразу
2240 ₽
Готовая работа

Разработка информационной системы поддержки научно-исследовательской деятельности на основе метода Zettelkasten

Уникальность: от 40%
Доступность: сразу
1799 ₽
Готовая работа

Разработка информационной системы учета приёма и оплаты заказов посетителей с использованием СУБД SQL Server и языка программирования С#

Уникальность: от 40%
Доступность: сразу
2200 ₽
Готовая работа

WEB-приложение оформления заказов в кондитерской. Предметом исследования является учет заказов кондитерских изделий в кондитерской.

Уникальность: от 40%
Доступность: сразу
4000 ₽
Готовая работа

WEB-приложение для салона красоты. Предмет исследования – процесс учёта заказов в салон красоты.

Уникальность: от 40%
Доступность: сразу
4000 ₽
Готовая работа

Автоматизация учета и анализа клиентского оборудования для интернет провайдера

Уникальность: от 40%
Доступность: сразу
2800 ₽
Готовая работа

Сравнительный анализ клиентских реализаций импорта пакетов и модулей в экосистеме JavaScript

Уникальность: от 40%
Доступность: сразу
2240 ₽
Готовая работа

Разработка интернет магазина по продаже семян и удобрений на базе joomla 1.7.

Уникальность: от 40%
Доступность: сразу
2000 ₽
Готовая работа

Разработка программного продукта для решений задач на основе метода анализа иерархий

Уникальность: от 40%
Доступность: сразу
500 ₽
Готовая работа

НАХОЖДЕНИЕ СПЕКТРАЛЬНОГО РАДИУСА МАТРИЦЫ МОДИФИЦИРОВАННЫМ СТЕПЕННЫМ МЕТОДОМ

Уникальность: от 40%
Доступность: сразу
3000 ₽