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

Задача про минимальный путь в лабиринте. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заменить каждую букву и знак пунктуации тем, который находится непосредственно слева от него на клавиатуре http://www.cyberforum.ru/cpp-beginners/thread391767.html
С++ Обычная ошибка при наборе состоит в том что вы помещаете руки на клавиатуре на 1 ряд правее верной позиции. Тогда "Q" будет печататься как "W", "J" печататься как "K", и т.д. Ваша задача состоит...
C++ заполнение динамического двумерного массива Дано число n. Создайте массив int A и заполните его по спирали начиная с числа 0 в центральной клетке A. Спираль выходит вверх, далее закручивается против часовой стрелки. Выведите массив на экран,... http://www.cyberforum.ru/cpp-beginners/thread391764.html
хитрая константа не даёт создать обычный массив C++
Почему я не могу создать обычный массив, указав константу в качестве количества элементов? int n=10; const int N(n); //N вроде как константа //действительно получает...
C++ Массивы и натуральные числа
Помогите пожалуйста написать программу. Ввести натуральное число n. а) Записать в массив только те делители числа n, которые являются палиндромами. б) Вывести все делители числа n, у которых...
C++ Класс "Список", функция добавления элемента в конец http://www.cyberforum.ru/cpp-beginners/thread391731.html
#include <iostream> #include <cstring> using namespace std; struct myElem { char *line; myElem *next; myElem(const char* str)
C++ Вывести все целые числа, расположенные между заданными Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (включая сами эти числа), в порядке их убывания. Использовать цикл for. #include <stdio.h>... подробнее

Показать сообщение отдельно
vikichocolate
25 / 14 / 1
Регистрация: 11.11.2011
Сообщений: 94

Задача про минимальный путь в лабиринте. - C++

25.11.2011, 19:03. Просмотров 2247. Ответов 7
Метки (Все метки)

Вот собственно сама задача:


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


И мой код. Но некоторые тесты он не проходит. Нужно помочь добить ее до 100%. Очень прошу помочь, т.к. в универе никто толком нормально помочь не может(вернее не хочет)...

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
#include<iostream>
#include<fstream>
using namespace std;
 
void main()
{
    int x, y ;  // размеры матрицы
    ifstream in;
    in.open("input.txt");
    ofstream  out;
    out.open("output.txt"); 
    in>>x>>y;
    int **b=new int*[x];
    for(int i=0; i<x; i++)   
        b[i] = new int[y];
    int **a=new int*[x];
    for (int i=0;i<x;i++)
    {
        a[i]=new int[y];
        for (int j=0;j<y;j++)
            in>>a[i][j];
    } 
    in.close();
    if(a[0][0]==0 && a[x-1][y-1]==0)
    {
        out<<"wrong matrix!"<<endl; 
    }
 
    for(int i=0; i<x; i++)
    {
        for(int j=0; j<y; j++)
        {
            b[i][j]=0;
        }
    }
    for(int i=0; i<x; i++)
    {
        for(int j=0; j<y; j++)
        {
            if(a[i][j]==0)
                a[i][j]=2;
            else
                a[i][j]=1;
        }
    }
 
 
 
    int k=1;
    //b[0][0]=k;
    for(int i=0; i<x; i++)
    {
        for(int j=0; j<y; j++)
        {
            if (i!=0 && j!=0) {
                k=a[i][j]+min(b[i-1][j], b[i][j-1]);
                b[i][j]=k+1;
                k++; 
            } 
        }
    }
    out<<b[x-1][y-1]; 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru