菜鸟请教一道C语言题目中的不明白的一处
(1= <i〈=6,1〈=j〈=6), c[i,j]=1 表示城市i到城市j有单向直达汽
车; 否则 c[i,j]=0. 试编制程序,对于给出的城市代号i,打印出从该城市出
发乘车(包括转车)可以到达的所有城市。
15.解答
地图是自己设置的,采用深度优先搜索
#include <stdio.h >
#define N 6
int C[N 1][N 1] = // 下标为0的元素是不使用的
// 首先,令C[i][i] = 1,即左上到右下对角线上值为1,表示所有城市可到达自己本身
// 假设1可到2,3,4,2可到1,3,6,3可到1,2,4,4可到2,3,6,5可到2,3,4,6可到1,2,3,
// 程序运行时:
// 输入:1或2或3或4或6
// 结果:1,2,3,4,6
// 输入:5
// 结果:1,2,3,4,5,6
{
-1,-1,-1,-1,-1,-1,-1,
-1, 1, 1, 1, 1, 0, 0,
-1, 1, 1, 1, 0, 0, 1,
-1, 1, 1, 1, 1, 0, 0,
-1, 0, 1, 1, 1, 0, 1,
-1, 0, 1, 1, 1, 1, 0,
-1, 1, 1, 1, 0, 0, 1
};
int visited[N 1] = {0}; // 下标为0的元素是不使用的
void visit(int i)
{
int j;
if( visited[i] )
return;
visited[i] = 1;
for(j=1; j <=N; j)
if(C[i][j]==1)
visit(j);
}
int main(void)
{
int i;
scanf("%d", &i);
visit(i);
for(i=1; i <=N; i)
if(visited[i])
printf("M",i);
printf("\n");
}
中的
int visited[N 1] = {0}; // 下标为0的元素是不使用的
void visit(int i)
{
int j;
if( visited[i] )
return;
visited[i] = 1;
for(j=1; j <=N; j)
if(C[i][j]==1)
visit(j);
}
一段不明白 希望高手 能 提点下
特别是
int visited[N 1] = {0};
if( visited[i] )
return;
visited[N 1] = {0};
中return是返回什么
什么也不返回,表示跳出函数。
return是用来从函数中退出,并不返回实际的值。
void visit(int i)
{
int j;
if( visited[i] )
return;
visited[i] = 1;
for(j=1; j <=N; j)
if(C[i][j]==1)
dngz.net
visit(j);
}
这个函数的返回值是void 表示不返回值的意思,
return一般返回0或1,表示转回操作系统跳出程序。
而void函数里着不能返回任何值,所以只能用return;
同意
ds





