c++程序(矩阵和函数)

c++ program (Matrix and functions)

本文关键字:函数 程序 c++      更新时间:2023-10-16

请帮帮我!我需要做一个程序来随机打印一个由0和1组成的6x6矩阵。最难的部分是程序必须显示(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) -(2, 1) -(2, 2)(2,3) -(3) -(3、4)——(3、5)-(4 - 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:对不起,我的英语不好。

这个答案可能不会对你有多大帮助,但也许你能从中得到一些引导你找到解决方案的信息。

你的矩阵是一个图,其中1是"节点",两个节点之间的直接邻居(一个单元的北/东/南/西)定义了一个"边"。你要做的是判断(0,0)和(5,5)在图中是否连通,如果连通则给出路径。

通常用邻接矩阵或邻接表来表示图。一旦你用其中一种表示形式解析了矩阵,你就可以尝试实现一些简单的图搜索算法,比如Dijkstra算法。有些方面变得特别容易,因为所有边都有相同的权值(如果有边则为1,否则为0)。如果不需要查找最短路径,则可以查看任何其他可达性算法。

最后,您可以尝试使用动态规划自己想出一些东西。这里的想法是建立一个结合部分解的算法。例如:如果你被要求找到一条从(5,5)开始的路径,那么解决方案是微不足道的-如果有一个"1",你就完成了。如果你需要从(5,5)开始向北/向西,你需要检查是否有一个"1"连接到你之前的更简单的子问题的解决方案。现在你需要继续像这样组合解,直到你得到一个可以从(0,0)开始的一般解。

如果你需要更多关于这些主题的信息,请告诉我们,但不要让我们做你的家庭作业。

祝你好运!