c++程序(矩阵和函数)
c++ program (Matrix and functions)
请帮帮我!我需要做一个程序来随机打印一个由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)开始的一般解。
如果你需要更多关于这些主题的信息,请告诉我们,但不要让我们做你的家庭作业。
祝你好运!
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 在C应用程序中运行C++(带有STL)函数
- 如何在c++程序中找到函数的地址
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- WIN32:C++,为什么在WM_CLOSE上调用Messagebox函数程序正在冻结
- 具有外部"c"和程序集的未定义函数
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 程序不会执行函数 c++
- C++调用具有 *this 属性的单个帮助程序函数
- 用于检查值是否为其任何参数的帮助程序函数
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 在 C++20 中是否不再允许在 std 中对程序定义类型的函数模板进行专用化?
- 程序不向函数返回值
- C++ 函数程序中的平均输出始终为 0.0
- 使用getline和字符串函数C++程序中的分段错误
- 如何理解哪个递归函数程序需要
- 3 函数加主函数 C 程序计算和显示阶乘
- 在结构中嵌入函数程序集代码
- c++的构造函数和析构函数程序集
- c++基本函数程序编译时不会出现满屏幕的错误