标题:一个有问题的最少上车次数程序
只看楼主
风弄无声
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-1-30
 问题点数:0 回复次数:1 
一个有问题的最少上车次数程序
请有知识之士帮忙看下,程序可以运行,但是有结果怪怪的,不知道哪里出了问题!!!!
#include <stdio.h>
#include <stdlib.h>
#define INFINITY 9999
#define MAXVNUM 30
int start,end;
typedef struct{
    int Vnum;
    int arcs[MAXVNUM][MAXVNUM];
}Graph;
int createGraph(Graph g)
{ int n,m,i,j,k,s,count;
  int t[MAXVNUM];
  printf("输入旅游景点数目和公交线路条数:\n");
  printf("旅游景点数目=");
  scanf("%d",&n);
  printf("公交线路条数=");
  scanf("%d",&m);
  if(n<=1||m<1)
  return -1;
  printf("输入起始景点编号和终止景点编号:\n");
  printf("起始景点=");
  scanf("%d",&start);
  printf("终止景点=");
  scanf("%d",&end);
  if(start<0 || start>n-1 || end<0 || end>n-1)
  return -1;
  g.Vnum=n;
  for(i=0;i<n;i++)
    for(j=0;j<n;j++)
      g.arcs[i][j]=INFINITY;
  for(s=0;s<m;s++)
  { printf("请输入第%d条公交线路途径各景点的编号: \n",s+1);
    scanf("%d",&k);
    count=0;
  while(k!=-1)
  {
    t[count++]=k;
    scanf("%d",&k);
  }
  for(i=0;i<count-1;i++)
    for(j=i+1;j<count;j++)
      g.arcs[t[i]][t[j]]=1;
  }
  return 0;
}
int findMinmum(Graph g,int start,int end)
{ int s[MAXVNUM];
  int i,j,u,*dist;
  int min;
  if(start==end)
      return 0;
  dist=(int *)malloc(sizeof(int));
  if(dist==NULL)
      return -1;
  for(i=0;i<g.Vnum;i++)
  {      dist[i]=g.arcs[start][i];
      s[i]=0;
   }
  s[start]=1;
  dist[start]=0;
  for(i=0;i<g.Vnum;++i)
  {  min=INFINITY;
     u=start;
     for(j=0;j<g.Vnum;++j)
         if(s[j]==0 && dist[j]<min)
         { min=dist[j];
           u=j;
     }
     s[u]=1;
     for(j=0;j<g.Vnum;++j)
         if(s[j]==0 && min+g.arcs[u][j]<dist[j])
             dist[j]=min+g.arcs[u][j];
  }
  return dist[end];
}
int main(void)
{ int m;
  Graph G;
  if(createGraph(G)==-1)
  {  printf("创建有向图失败!\n");
     return -1;
  }
  m=findMinmum(G,start,end);
  if(m<INFINITY)
      printf("\n 从景点%d到%d的最少换车次数为: %d",start,end,m-1);
  else
      printf("\n无解!");
  return 0;
}

[[it] 本帖最后由 风弄无声 于 2008-6-1 16:01 编辑 [/it]]

[[it] 本帖最后由 风弄无声 于 2008-6-1 16:23 编辑 [/it]]
搜索更多相关主题的帖子: int 公交线路 Graph 
2008-06-01 15:37
Loli
Rank: 1
来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
得分:0 
这是什么东西??


[color=white]
2008-06-01 15:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-217025-1-1.html




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

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