我得到了一些功课,需要编写一个程序,给出矩阵表示邻接 . 如果索引的两个值之间存在路径,则用户需要将矩阵放入并且索引和程序返回true . 例如
0 1 2 3 4
1 0 1 0 0
2 0 0 1 0
3 0 0 0 0
4 0 0 0 0
如果用户提供此矩阵(没有索引号)并给出值3,1则返回true,因为3是2的子,2是1的子 . 但是如果用户给出值4,1则返回false .
#include <stdio.h>
#define N 11
#define TRUE 1
#define FALSE 0
int path(long int [][20] A, int u, int v)
{
if(u == 0 && A[u][v] == TRUE)
return TRUE;
if(u == 0 && A[u][v] == FALSE)
return FALSE;
if(A[u][v] == FALSE)
return path(A, u--, v);
else if(A[u][v] == TRUE)
return path(A, N, u);
}
int main()
{
int arr[11][11] = {{0,1,1,1,0,0,0,0,0,0,0},
{0,0,0,0,1,1,1,1,1,0,0},
{0,0,0,0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0}};
return path(arr,1,8);
return 0;
}
当我尝试在gcc上运行它时它会返回:
adjacency.c:8:26:错误:预期';',','或')'在'A'之前'adjacency.c:在函数'main'中:adjacency.c:30:1:警告:隐式声明函数'path'[-Wimplicit-function-declaration]
请问enybody请告诉我为什么?如果我的程序甚至有效?多谢你们
1 回答
函数原型与数组大小不匹配 .
尝试改变
成
并在主要变化
至
或者在函数中删除long
BTW:
N = 11可能很糟糕 . 您将在数组外部编制索引 .
也许你想要
相反,以避免索引数组超出范围 .
IMPORTANT:
可能需要:
因为你是一个后减法 . 你将有一个无限循环调用路径(..)一次又一次地使用相同的值 .
您希望它在函数调用之前递减 . 所以使用-u因为它是预先减少的 .