Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 1 / 1
Регистрация: 11.03.2018
Сообщений: 96

Найти количество различных маршрутов ведущих к спасению узника

23.11.2018, 14:56. Показов 2575. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача простоя, как мне кажется , и по логике я делаю правильно. Но что-то не так.Прошу вашей помощи.
Вот ссылка на условие
1 Попытка к бегству

Время на тест - 3 секунды.

Идентификатор для autotest: ol001

Узник пытается бежать из замка, который состоит из MN квадратных комнат, расположенных в виде прямоугольника M×N. Между любыми двумя соседними комнатами есть дверь , однако некоторые комнаты закрыты и попасть в них нельзя. В начале узник находится в угловой комнате и для спасения ему надо попасть в противоположную угловую комнату. Времени у него немного, всего он может побывать не более, чем в M+N-1 комнате, включая начальную и конечную комнату на своем пути, то есть с каждым переходом в соседнюю комнату расстояние до выхода из замка должно уменьшаться. От вас требуется найти количество различных маршрутов, ведущих к спасению.
Формат входных данных

Первая строчка входных данных содержит натуральные числа M и N, не превосходящих 1000. Далее идет план замка в виде M строчек из N символов в каждой. Один символ соответствует одной комнате: если символ равен 1, то в комнату можно попасть, если он равен 0, то комната закрыта. Первоначальное положение узника – левый нижний угол (первый символ последней строки), выход находится в правом верхнем углу (последний символ первой строки, оба этих символа равны 1).
Формат выходных данных

Программа должна напечатать количество маршрутов, ведущих узника к выходу и проходящих через M+N-1 комнату, или слово impossible, если таких маршрутов не существует.

Входные данные подобраны таким образом, что искомое число маршрутов не превосходит 2.000.000.000.
Пример

Входные данные

3 5
11111
10101
11111

Выходные данные

3

Входные данные

3 5
11101
10101
10111

Выходные данные

impossible
Кликните здесь для просмотра всего текста
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
 
using namespace std;
 
int main(int argc, char** argv) {
 
int n,m;
cin>>m>>n;
int arr[m][n];
int f=m+n-1;
int count=0;
 
 
for(int i=0;i<m;i++){
    for(int j=0;j<n;j++){                   // Вводим масив
        cin>>arr[i][j];
    }
}
int posx=0;
int posy=m;
 
int d=0;  // Внимание
while (d<=(m*n)){
 
    for(int i=0;i<m+n-1;i++){               //-----------------------------------------------
        if(posx>=n&&posy<=0){
            count++;
            posx=0;posy=m;
        }
    
        else{                                   // Подсчёт 
            if(posx<n&&arr[posx+1][posy]==1){
                posx++;
                
                if(arr[posx+1][posy]==1&&arr[posx][posy-1]==1&&arr[posx][posy+1]){
                    // не меняем
                }
                else{
                    arr[posx][posy]=0;
                }
            }
            
            if(posy>0&&arr[posx][posy-1]==1){
                posy--;
                
                if(arr[posx+1][posy]==1&&arr[posx][posy-1]==1&&arr[posx][posy+1]){
                    // не меняем
                }
                else{
                    arr[posx][posy]=0;
                }
            }
            
            else{
                break;
            }
        }
    }
    
    d++;
    
}                                       //-----------------------------------------------
 
if(count==0){
    cout<<endl<<"imposible";                // Вывод на экран
}
 
else{
    cout<<endl<<count;
}
 
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.11.2018, 14:56
Ответы с готовыми решениями:

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

Посчитать количество замкнутых маршрутов, проходящий ровно через четыре различных города
Задача E. Тетрациклофобия Имя входного файла: phobia.in Имя выходного файла: phobia.out Ограничение по времени: 2 секунды ...

Найти количество различных маршрутов, ведущих к спасению узника из замка
Помогите решить задачку :)) 1 Попытка к бегству Время на тест - 3 секунды. Идентификатор для autotest: ol001 Узник...

4
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
23.11.2018, 15:24
Цитата Сообщение от ORK_ Посмотреть сообщение
cin>>m>>n;
int arr[m][n];
это уже неправильно. размер статического массива - const

напишите условие задачи
0
2 / 1 / 1
Регистрация: 11.03.2018
Сообщений: 96
23.11.2018, 15:29  [ТС]
1 Попытка к бегству
Время на тест - 3 секунды.

Идентификатор для autotest: ol001

Узник пытается бежать из замка, который состоит из MN квадратных комнат, расположенных в виде прямоугольника M×N. Между любыми двумя соседними комнатами есть дверь , однако некоторые комнаты закрыты и попасть в них нельзя. В начале узник находится в угловой комнате и для спасения ему надо попасть в противоположную угловую комнату. Времени у него немного, всего он может побывать не более, чем в M+N-1 комнате, включая начальную и конечную комнату на своем пути, то есть с каждым переходом в соседнюю комнату расстояние до выхода из замка должно уменьшаться. От вас требуется найти количество различных маршрутов, ведущих к спасению.

Формат входных данных
Первая строчка входных данных содержит натуральные числа M и N, не превосходящих 1000. Далее идет план замка в виде M строчек из N символов в каждой. Один символ соответствует одной комнате: если символ равен 1, то в комнату можно попасть, если он равен 0, то комната закрыта. Первоначальное положение узника – левый нижний угол (первый символ последней строки), выход находится в правом верхнем углу (последний символ первой строки, оба этих символа равны 1).

Формат выходных данных
Программа должна напечатать количество маршрутов, ведущих узника к выходу и проходящих через M+N-1 комнату, или слово impossible, если таких маршрутов не существует.

Входные данные подобраны таким образом, что искомое число маршрутов не превосходит 2.000.000.000.

Пример
Входные данные

3 5
11111
10101
11111
Выходные данные

3
Входные данные

3 5
11101
10101
10111
Выходные данные

impossible

Добавлено через 10 секунд
Yetty, Вот

Добавлено через 55 секунд
Yetty, Насколько я помню, мы созданали масив без константы
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
23.11.2018, 15:39
ORK_, размер статического массива задаётся на стадии компиляции.
пишем так:
C++
1
2
const int n=3, m=4;
int a[n][m];
или сразу:
C++
1
int a[3][4];
если нужно задавать размер с клавиатуры, используется динамический массив:
C++
1
2
3
4
5
6
7
int n, m;
cout <<"n="; cin >>n;
cout <<"m="; cin >>m;
    
double **a = new double*[n]; 
  for (int i = 0; i < n; i++)
     a[i]=new double[m];
что касается задачи, она неоднократно была на форуме. используйте поиск по фразе
Цитата Сообщение от ORK_ Посмотреть сообщение
Узник пытается бежать из замка
0
2 / 1 / 1
Регистрация: 11.03.2018
Сообщений: 96
23.11.2018, 15:40  [ТС]
Yetty, Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2018, 15:40
Помогаю со студенческими работами здесь

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

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

Определить, сколько существует различных маршрутов, ведущих из левого верхнего в правый нижний угол
Дана прямоугольная доска N × M (N строк и M столбцов). В левом верхнем углу находится шахматный конь, которого необходимо переместить в...

Функция getPies(mapAlice) для печати количество различных маршрутов
У Боба есть электрический самокат, на котором он любит кататься по городу. В зависимости от режима работы, самокат способен проходить 1, 2...

Определить количество ведущих единиц
здарвствуйте все! помогите пожалуйста с заданиями по мере возможностей: 1) представить программу, позволяющую для заданного...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru