首页 > 解决方案 > 使用 C 中的 DFS 方法,我怎样才能使它没有用户输入

问题描述

对于我的代码,我正在检查图形是否使用 DFS 连接。截至目前,它使用用户输入。我希望它不使用二维数组(矩阵)的用户输入。我会对这部分isConnected()(见下文)做些什么来修复它,这样我就可以使用全局二维数组 b 而不是全局二维数组 a

printf("\nEnter adjacency matrix : \n");
    for(i=1;i<=n;i++)
      for(j=1;j<=n;j++)
        scanf("%d",&a[i][j]);

这是我到目前为止所拥有的

int a[20][20],reach[20],n;
int b[4][4] = { {0,1,1,1},{0,0,1,0},{0,0,0,0},{0,0,0,1}};
void dfs(int v){
    int i;
    reach[v]=1;
    for(i=1;i<=n;i++)
        if(a[v][i]&&!reach[i]){
        printf("\n%d->%d",v,i);
        dfs(i);
    }
}
void isConnected(){
    int i,j,count=0;
    printf("\n no of vertices is 4 ");
    // scanf("%d",&n);
    int n = 4;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++){
        reach[i]=0;
        a[i][j]=0;
    }

    printf("\nEnter adjacency matrix : \n");
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
    dfs(1);
    for(i=1;i<=n;i++)
        if(reach[i])
            count++;
    if(count==n)
        printf("\nGraph is connected.");
    else
    printf("\nGraph is disconnected.");
}

为了节省一些混乱,我取出了 main ,它只是调用该函数来检查它是否已连接

标签: c

解决方案


推荐阅读