| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 718 人关注过本帖
标题:谁能帮小弟写一个最简单的C++,急啊
只看楼主 加入收藏
longyushen
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-12-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
谁能帮小弟写一个最简单的C++,急啊
详情看附件,谢谢啊
kejian.rar (9.32 KB)

下面是第五的,可是不知道为什么调试的时候总是说未编译,麻烦高手指点
程序代码:
#include <iostream>
using namespace std;
#define MAXV 50
#define INF 32767
typedef int InfoType;
//邻接矩阵存储方法
typedef struct
{
    int no;
    InfoType info;
} VertexType;
typedef struct
{
    int edges[MAXV][MAXV];
    int n,e;
    VertexType vexs[MAXV];
} MGraph;
//狄克斯特拉算法
void Ppath(int path[],int i,int v)
{
    int k;
    k=path[i];
    if(k==v) return;
    Ppath(path,k,v);
    cout<<k;
}  
int biaoji1=0,biaoji2=0;
void Dispath(int dist[],int path[],int s[],int n,int v)
{
    int i;
    for(i=0;i<n;i++)
    {
        if(i==v) continue;
        if(s[i]==1)
        {
   cout<<""<<v<<""<<i<<"的最短路径为:"<<dist[i]<<"    ";
            cout<<v;
            Ppath(path,i,v);
            cout<<i<<endl;
        if(biaoji1!=5)
  {biaoji2+=dist[i];biaoji1++;}
  else
  {
   cout<<"和为:"<<"    "<<biaoji2;
   biaoji1=0;biaoji2=0;
  }
  }   
        else
  cout<<""<<v<<""<<i<<"不存在的路径"<<endl;
    }   
}
void Dijkstra(MGraph g,int v)
{
    int dist[MAXV],path[MAXV];
    int s[MAXV];
    int mindis,i,j,u;
    for(i=0;i<g.n;i++)
    {
        dist[i]=g.edges[v][i];
        s[i]=0;
        if(g.edges[v][i]<INF) path[i]=v;
        else path[i]=-1;
    }
    s[v]=1;path[v]=0;
    for(i=0;i<g.n;i++)
    {
        mindis=INF;
        for(j=0;j<g.n;j++)
        {
            if(s[j]==0&&dist[j]<mindis)
            {
                u=j;
                mindis=dist[j];
            }   
        }   
        s[u]=1;
        for(j=0;j<g.n;j++)
        {
            if(s[j]==0)
            {
                if(g.edges[u][j]<INF&&dist[u]+g.edges[u][j]<dist[j])
                {
                    dist[j]=dist[u]+g.edges[u][j];
                    path[j]=u;
                }   
            }   
        }   
    }
    Dispath(dist,path,s,g.n,v);    
}
//弗洛伊德算法
void Ppath1(int path[][MAXV],int i,int j)
{
    int k;
    k=path[i][j];
    if(k==-1) return;
    Ppath1(path,i,k);
    cout<<k;
    Ppath1(path,k,j);
}  
void Dispath1(int A[][MAXV],int path[][MAXV],int n)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(i==j) continue;
            if(A[i][j]==INF)
            {
                if(i!=j)
     cout<<""<<i<<""<<j<<"不存在路径"<<endl;
            }   
            else
            {
    cout<<""<<i<<""<<j<<"的最短路径长度为:"<<A[i][j]<<"    ";
                cout<<i;
                Ppath1(path,i,j);
                cout<<j<<endl;
            }   
        }   
    }   
}
void Floyd(MGraph g)
{
    int A[MAXV][MAXV],path[MAXV][MAXV];
    int i,j,k;
    for(i=0;i<g.n;i++)
    {
        for(j=0;j<g.n;j++)
        {
            A[i][j]=g.edges[i][j];
            path[i][j]=-1;
        }   
    }
    for(k=0;k<g.n;k++)
    {
        for(i=0;i<g.n;i++)
        {
            for(j=0;j<g.n;j++)
            {
                if(A[i][j]>A[i][k]+A[k][j])
                {
                    A[i][j]=A[i][k]+A[k][j];
                    path[i][j]=k;
                }   
            }
        }
    }
    Dispath1(A,path,g.n);           
}   

//主函数
int main()
{
    int i,j,n;
    MGraph g;

 cout<<"请输入带权有向图的顶点个数:";//6
    while(scanf("%d",&n)!=EOF/*cin>>n,n!=EOF*/)
    {
  cout<<"请输入带权有向图的邻接矩阵:"<<endl;
  /*
        0 5 32767 7 32767 32767
        32767 0 4 32767 32767 32767
        8 32767 0 32767 32767 9
        32767 32767 5 0 32767 6
        32767 32767 32767 5 0 32767
        3 32767 32767 32767 1 0
        */   

        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                //scanf("%d",&g.edges[i][j]);
    cin>>g.edges[i][j];
            }
        }
        g.n=n;
  cout<<"采用狄克斯特拉算法得到的最短路径为:"<<endl;
        for(i=0;i<n;i++) Dijkstra(g,i);
  cout<<endl;
  cout<<"采用弗洛伊德算法得到的最短路径为:"<<endl;
  Floyd(g);
  cout<<endl;
  cout<<"请输入带权无向图的顶点个数:";
    }
    return 0;
}


[ 本帖最后由 longyushen 于 2011-12-23 12:30 编辑 ]
搜索更多相关主题的帖子: color 
2011-12-22 23:38
樱花雾海
Rank: 2
来 自:广西桂林
等 级:论坛游民
帖 子:39
专家分:28
注 册:2011-6-17
收藏
得分:5 
兄弟,我看了下,表示无能为力,估计我的水平现在只能看懂题目意思
2011-12-22 23:54
单行道1129
Rank: 3Rank: 3
来 自:山东潍坊
等 级:论坛游侠
帖 子:38
专家分:118
注 册:2011-10-26
收藏
得分:5 
有钱吗??多少钱??
2011-12-23 09:22
longyushen
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-12-22
收藏
得分:0 
以下是引用单行道1129在2011-12-23 09:22:37的发言:

有钱吗??多少钱??
你出个价看看
2011-12-23 10:59
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:5 
这个可不简单,涉及到数据结构和算法的问题。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-12-23 11:21
longyushen
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2011-12-22
收藏
得分:0 
回复 5楼 waterstar
我也只做到一半,晕死了,别的还得慢慢地摸索
2011-12-23 11:31
快速回复:谁能帮小弟写一个最简单的C++,急啊
数据加载中...
 
   



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

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