| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 508 人关注过本帖
标题:遍历了所有路径,如何加入路径和?
只看楼主 加入收藏
w的平方
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2023-4-12
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:2 
遍历了所有路径,如何加入路径和?
程序代码:
#include<stdio.h>
#include<math.h>
int map[100][100]={0};
int stack[120],v[100]={0},top=0,m,n,start,end,L[100],Length=0;
void dfs(int pos)
{
    int i;
    if(pos==end){
        for(i=0;i<top;i++)
            printf("%d ",stack[i]);
        printf("%d\n",end);    
        for(i=0;i<top;i++)
        Length=L[stack[i]]+Length; 
        printf("%d\n",Length);
        return;
    }
    v[pos]=1;
    stack[top++]=pos; 
    for(i=1;i<=n;i++){
        if(!v[i]&&map[pos][i])
            dfs(i);
    }
    v[pos]=0;
    top--;
}

int main()
{
    int i,x,y,z;
    printf("分别输入顶点数n和路径数m:"); 
    scanf("%d %d",&n,&m);//n是顶点数,m是边数 
    
    printf("输入m条路径及长度:"); 
    for(i=1; i<=m; i++) {
        scanf("%d %d %d", &x,&y,&z);
        L[i]=z;
        map[x][y] = 1; 
        map[y][x] = 1;//无向图
    }
    
    printf("输入起始点和终点:");
    scanf("%d %d", &start,&end);
    
    printf("\n程序执行结果为:\n"); 
    dfs(start);
    return 0;}

不知道该怎么改求路径和?想得出每个路径的总长度,知道L[]的代码有问题,不知道怎么改?
搜索更多相关主题的帖子: printf i++ 路径 Length int 
2023-08-29 19:56
w的平方
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2023-4-12
收藏
得分:0 
没人会嘛?
2023-09-01 21:34
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1703
专家分:4339
注 册:2007-12-27
收藏
得分:20 
主要是书上有现成的,没必要。
程序代码:
#include <stdio.h>
#include <math.h>

int map[100][100] = { 0 };
int stack[120], v[100] = { 0 }, top = 0, m, n, start, end, L[100], Length = 0;
void dfs(int pos,int L1)
{
    int i;
    if (pos == end) {
        for (i = 0; i < top; i++)
            printf("%d ", stack[i]);
        printf("%d\n", end);

 //       for (i = 0; i < top; i++)

 //           Length = L[stack[i]] + Length;
        printf("%d\n", L1);
        return;
    }
    v[pos] = 1;
    stack[top++] = pos;
    for (i = 1; i <= n; i++) {
        if (!v[i] && map[pos][i])
            dfs(i,L1+map[pos][i]);
    }
    v[pos] = 0;
    top--;
}

int main()
{
    int i, x, y, z;
    printf("分别输入顶点数n和路径数m:");
    scanf("%d %d", &n, &m);//n是顶点数,m是边数 

    printf("输入m条路径及长度:");
    for (i = 1; i <= m; i++) {
        scanf("%d %d %d", &x, &y, &z);

 //       L[i] = z;
        map[x][y] = z;
        map[y][x] = z;//无向图
    }

    printf("输入起始点和终点:");
    scanf("%d %d", &start, &end);

    printf("\n程序执行结果为:\n");
    dfs(start,0);
    return 0;
}

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2023-09-02 12:03
快速回复:遍历了所有路径,如何加入路径和?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043343 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved