【问题标题】:c++ program (Matrix and functions)c++程序(矩阵和函数)
【发布时间】:2014-07-10 19:44:38
【问题描述】:

请帮帮我!我需要做一个随机打印 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,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:对不起,我的英语不好。

【问题讨论】:

  • 这个问题似乎离题了,因为它缺乏足够的信息来诊断问题。更详细地描述您的问题或在问题本身中包含minimal example。

标签: c++ std iostream ctime time.h


【解决方案1】:

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

您的矩阵是graph,其中一个是“节点”,两个矩阵之间的直接相邻关系(单元格的北/东/南/西)定义了一个“边”。您需要判断 (0,0) 和 (5,5) 在该图中是否连接,如果连接则给出路径。

通常用adjacency matrix 或adjacency list 表示图形。一旦你用这些表示之一解析了矩阵,你可以尝试实现一些简单的图形搜索算法,比如Dijkstra's algorithm。某些方面变得特别容易,因为所有边都具有相同的权重(如果有边则为 1,否则为 0)。如果您不需要找到 最短 路径,您可以查看任何其他 reachability algorithms。

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

如果您需要关于这些主题的更多意见,请告诉我们,但不要要求我们做您的功课。

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2018-06-07
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    相关资源
    最近更新 更多