【发布时间】:2015-04-25 14:39:37
【问题描述】:
我有一些看起来像这样的家庭作业:
问题1(第一个程序adjacency.c文件)
有向树结构T有N个节点,由邻接矩阵A表示,大小为NxN,如下:
A [ u ] [ v] == TRUE 当且仅当在 T 中存在从 u 到 v 的有向弧,或者换句话说:
u 是 v 的父级。在此 example 中,一棵树有 N = 11 个节点。
我们得到以下neighboring matrix。
问题是:
您必须使用#define 命令和/或枚举 N 和永久 TRUE 和 FALSE 进行定义。 typedef 应该设置一个名为 adj_mat 的字符来定义相邻矩阵大小 N。
您必须编写一个名为 path 的函数,该函数接受邻接矩阵 A 和两个节点 u 和 v 的索引作为参数,当且仅当在交叉点存在有向路径(按方向箭头)时才返回 TRUE uv,树用矩阵A表示。否则返回FALSE。
例如:路径 (1,8) 将返回 TRUE。相同的路径 (1,3)。另一方面,路径 (3,8) 将为 FALSE。
- 首先你必须写一个函数(main)定义一个变量类型adj_mat,询问用户输入这个矩阵,以及两个节点的索引。 main函数函数调用路径,查看数据中两个节点之间是否存在有向路径。打印测试结果输出的函数。
一定要找人帮忙
#include <stdio.h>
#define N 11
enum {FALSE, TRUE};
typedef int adj_mat[N][N];
int path2(adj_mat A, int u, int v, int temp)
{
if(u == temp && A[u][v] == FALSE)
return TRUE;
if(u == temp && A[u][v] == FALSE)
return FALSE;
if(A[u][v] == FALSE)
return path2(A, u-1, v, temp);
if(A[u][v] == TRUE)
return path2(A, N, u, temp);
return FALSE;
}
int path(adj_mat A, int u, int v)
{
return path2(A, N, v, u);
}
int main()
{
int arr[N][N]= {{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}};
int u;
int v;
printf("please enter two numbers \n");
scanf("%d %d", &u, &v);
printf("The answer is %d", path(arr, u, v),".");
return 0;
}
问题出在终端,当我输入 1,8 时它什么也没做。
【问题讨论】:
-
您的问题是什么?你试过什么,怎么失败了?
-
编辑了问题。当我输入 1, 8 时,它不会在终端返回任何内容
-
如果你纠正了问题最后一行的语法、拼写和标点符号,我会告诉你如何修复这个bug。
-
对不起,我对编程有点陌生。你能告诉我要改变什么吗?
-
你必须从一个更简单的练习开始。编写软件的关键是从小而简单的东西开始,然后一步一步地构建。如果你试图一口气写一个大程序,那是行不通的。试试
HelloWorld,然后从那里开始。
标签: c matrix adjacency-matrix