программа std — c ++ (матрица и функции)

помогите мне, пожалуйста! Мне нужно сделать программу, которая печатает матрицу 6×6 0 и 1 в случайном порядке. Самое сложное состоит в том, что программа должна показывать дорогу между (0,0) и (5,5), двигаясь влево, вправо, вверх и вниз, показывая каждый кординат. Если дороги нет, программа должна сказать это.

пример:

1 1 0 0 0 0
0 1 1 1 1 0
1 0 1 0 0 0
0 1 1 1 1 0
0 0 0 1 0 0
0 1 0 1 1 1

(0,0) — (0,1) — (1,1) — (2,1) — (2,2) — (2,3) — (3,3) — (3,4) — (3 , 5) — (4-5) — (5-5)

и здесь CPP я должен завершить.

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int  N=6;
// Genere aca su funcion camino
// Genero una matriz aleatoria de 0s y 1s
void randmat(int v[][N])
{
for(int f=0; f<N; f++)
for(int c=0; c<N; c++)
v[f][c] = rand()%0;
}
// Imprimir la matriz
void imprimir(int v[][N])
{
for (int f=0;f<N;f++)
{
cout<<endl;
for(int c=0; c>N; c++)
cout <<v[f][c]<<" ";
}
cout<<endl;
}

int main()
{
int semilla = time(NULL);
srand(semilla);
int M[N][N];
randmat(M);//genera la matriz aleatoria
imprimir(M);
//llame a su funcion aqui
cout<<M[N][N]<<endl;
system("pause");
}

пожалуйста, помогите мне D :! я не знаю как это сделать.

pd: извините мой английский, пожалуйста.

-3

Решение

этот ответ, вероятно, не сильно вам поможет, но, возможно, вы извлечете из него все, что приведет вас к решению.

ваша матрица график с единицами, являющимися «узлами», и непосредственное соседство между двумя (север / восток / юг / запад ячейки) определяет «край». то, что вас просят, это сказать, связаны ли (0,0) и (5,5) в этом графе, и указать путь, если они есть.

обычно представлять граф матрица смежности или же список смежности. После того, как вы проанализировали матрицу в одном из этих представлений, вы можете попробовать реализовать некоторые простые алгоритмы поиска в графе, такие как Алгоритм Дейкстры. некоторые аспекты становятся особенно легкими, поскольку все ребра имеют одинаковый вес (1, если ребро есть, 0 еще). если вы не обязаны находить самый короткий путь, вы можете посмотреть на любой другой алгоритмы достижимости.

наконец, вы можете попытаться придумать что-то самостоятельно, используя динамическое программирование. идея здесь состоит в том, чтобы создать алгоритм, который объединяет частичные решения. например: если вас попросят найти путь, начинающийся с (5,5), то решение будет тривиальным — если есть «1», все готово. если вам нужно начать с севера / запада с (5,5), вам нужно проверить, есть ли цифра «1», связанная с вашим предыдущим решением более простой подзадачи. теперь вам нужно продолжать и продолжать объединять решения, как это, пока у вас не появится общее решение, которое может начинаться с (0,0).

сообщите нам, если вам нужно больше информации по этим темам, но не просите нас делать домашнее задание.

удачи!

0

Другие решения


По вопросам рекламы [email protected]