在C中使用DFS方法,我该如何做,这样就不会有用户输入

时间:2018-12-14 01:28:47

标签: c

对于我的代码,我正在检查图形是否使用DFS连接。到目前为止,它使用用户输入。我希望它不将用户输入用于2D数组(矩阵)。我将如何对isConnected()的这一部分进行修复(请参见下文),以便可以使用全局2D数组b而不是全局2D数组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,它只是调用该函数以检查其是否连接

0 个答案:

没有答案