Вывести значения кратчайшего пути от любого элемента к заданному элементу в матрице - PullRequest
0 голосов
/ 30 марта 2020

Входные данные: количество строк, количество столбцов и координаты точки.
названной позиции будет присвоено значение 0.
примечание: индексация начинается с 1 (я знаю, что это плохая практика, но это требование)
т.е.: для этого входа 4 5 1 1 будет сгенерирована эта матрица:
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7

Я не хочу код, но если кто-то может дать мне подсказку или что-то помочь, это будет с благодарностью! Если код проще, чем объяснение способа его решения, то, пожалуйста, не стесняйтесь публиковать его. (C ++) Редактировать: у меня есть решение, как я могу сделать это быстрее?

#include <iostream>
using namespace std;
int main()
{
    int v[501][501], i, j, m, n, o, p;
    cin >> m >> n >> o >> p;
    for (i = o; i >= 1; i--)
            v[i][p] = o - i;
    for(i = o;i <= m; i++)
        v[i][p] = i - o;
    for(i = 1; i <= m; i++)
        for(j = 1; j <= n; j++){
            if(j < p)
                v[i][j] = -j + p + v[i][p];
            else if(j > p)
                v[i][j] = j - p + v[i][p];            
        }
    for(i = 1 ; i <= m; i++){
        for(j = 1; j <= n; j++)
            cout << v[i][j] << " ";
        cout << '\n';
    }
}

1 Ответ

1 голос
/ 30 марта 2020

Попробуйте нарисовать ответ для нескольких примеров, и вы увидите шаблон, который вы можете mimi c.

Например:

5 5 3 3

4 3 2 3 4

3 2 1 2 3

2 1 0 1 2

3 2 1 2 3

4 3 2 3 4

Кстати, это стандартный вопрос, который нужно решить с помощью BFS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...