主.cpp:63:12:错误:从 'int (*)[4]' 到 'int' [-允许] 的转换无效。我做错了什么?
main.cpp:63:12: error: invalid conversion from 'int (*)[4]' to 'int' [-fpermissive]. What am I doing wrong?
#include <stdio.h>
#include <limits.h>
#include <iostream>
#define V 5
using namespace std;
void dfs(int ,int );
int kante(int, int);//edge
int G[V][V];// Graph
int i;
int mark[10];// mark the vertex, if it's been visited
int S[V]; // Stack, with the nodes
int ps; // counter of nodes in S
int j,Kn;
int l;
void dfs(int G,int k){
for(int j=1; j<=V; j++)
mark[j]=0; // initialise all nodes as unvisited
S[1]=k; // starting node=k
ps=1; // S has one element
while(ps>0){
Kn==S[ps];
for(int i=1;i<=V;i++){// check for neighbour
if (mark[i]==1) ps=ps-1; // already visited-->delete the node from S
else
if(mark[i]==0)// not visited
{
if ((G[i][Kn]!=0) || (G[Kn][i]!=0)){// Kn adjacent with i
dfs(G,i); // do the same for node i
mark[i]=1; // mark it as visited
ps++;
S[ps]=i; // put it in stack
}
}
}
}
}
int main(){
int G[4][4]={{0,1,1,0},
{0,0,1,0},
{1,0,0,1},
{0,0,0,1},
};
cout<<"Tiefensuche, startknoten 0:n"<<endl; // DFS, starting node
dfs(G,0); // applied dfs on starting node 0
return 0;
}
我不明白为什么这不起作用。此代码应通过访问所有节点来深度遍历图形。如何重新定义图(矩阵(,以便它可以作为参数传递给函数 dfs。我收到以下错误:
main.cpp:42:29: error: invalid types 'int[int]' for array subscript
if ((G[i][Kn]!=0) || (G[Kn][i]!=0)){
^
main.cpp:42:47: error: invalid types 'int[int]' for array subscript
if ((G[i][Kn]!=0) || (G[Kn][i]!=0)){
^
main.cpp: In function 'int main()':
main.cpp:63:12: error: invalid conversion from 'int (*)[4]' to 'int' [-fpermissive]
dfs(G,0);
^
main.cpp:30:6: note: initializing argument 1 of 'void dfs(int, int)'
void dfs(int G,int k){
您在dfs
中使用G
作为 2D 数组。函数的声明应反映这一点。而不是
void dfs(int ,int );
用
void dfs(int (*G)[4], int k);
相关文章:
- 错误:从"int"到枚举c++的转换无效
- 多维数组 C++ 中数组下标的类型"int[int]"无效
- 从 'int' 到 'int*' CPP 的转换无效
- 无效 f(int) 的模板和 decltype
- 错误:从"int"到"int*"的转换无效[-允许].我在下面提供了我的代码,我
- 错误:数组下标的类型"int[int]"无效
- int* 和 int[] 类型对二进制运算符 + 的操作数无效
- 从类指针到 int 的转换无效
- C++ 错误:由于 swprintf 而从 'int' 到 'const wchar_t* 的转换无效
- 为什么 std::d eclval<int>() = std::d eclval<int>() 无效?
- 错误:数组下标的类型"const bool[int]"无效
- 2D数组中数组下标的类型"int[int]"无效
- 错误:数组下标的类型'int[int]'无效
- C++中的合并排序:无法在合并函数中传递数组 - 转换为'int*'无效
- 数组下标的类型"int[int]"无效
- 使用矢量的数组下标'int[int]'无效类型
- C++中的二进制补码 - 数组下标的类型"int[int]"无效
- 从“char*”到“char”[-fpermissive]的转换无效,数组下标的类型“char[int]”无效
- 无法解决错误:间接寻址需要指针操作数("int"无效)
- C++将数组相互分配;type int*=type int有效,但int=int*无效