財神娛樂首存即享優惠回饋唷~詳情請進👉

《數據布局》圖floyd算法示例-老虎機 規則人人肯定要望

圖的只操作龐大,但很在乎義以及意思。這里依據講義精髓,完成一個圖的最短路徑算法,請參考。

預備計算講義P172,圖6-13。以下:

#include <iostream>  
#include <string>  
#include<iomanip>      //引入輸出輸入格局頭文件
using namespace std;  
const int Maxsize = 10;  

class MGraph  
{  
public:  
    MGraph(string a,int n,int e);  
    void Floyd();  
    void print();  
private:  
    string vertex[Maxsize];  
    int arc[Maxsize][Maxsize];  
    int vertexNum,arcNum;  
    int dist[Maxsize][Maxsize];  
   string path[Maxsize][Maxsize];  
};  

MGraph:: MGraph(string a,int e)  
{   int i,j,k,info;  
    vertexNum = n;  
    arcNum = e;  
    for(i=0;i六合彩算法<vertexNum;i++)  
        vertex[i]=a[i];  

    for(i=0;i<vertexNum;i++)        //初始化邊,請將不達到邊初始值為最大值,這里使用10000
        for(j=0;j<vertexNum;j++)  
            arc[i][j]=10000;  

    for(k=0;k<arcNum;k++)          //輸出圖的邊的極點信息,將圖極點進行編號,從0最先
    {   cout<<公眾請輸出邊憑借的兩個極點的編號"大眾<<endl;  
        cin>>i>>j;  
       香港六合彩资料 while(i>=vertexNum && j>=vertexNum)  
        {   cout<<"大眾請從新輸出"大眾<<endl;  
            cin>>i>>j;  
        }  
        cout<<公眾請輸出邊的權值"大眾<<endl;  //輸出圖的邊的權值
        cin>>info;  
        while(info < 0)  
        {   cout<<"大眾請從新輸出公眾<<endl;  
            cin>>info;  
        }  
        arc[i][j]=info;  
    }  
  }  
void MGraph::Floyd()  
{   int i,k;  
    for(i=0;i<vertexNum;i++)           //初始化dist以及path 
        for(j=0;j<vertexNum;j++)  
        {    dist[i][j] = arc[i][j]; 
			 if(dist[i][j] != 10000) 
				 path[i][j]=vertex[i]+vertex[j];  
             else path[i][j] ="大眾 "大眾;  
  大樂透加碼      }  
    for(k=0;k<vertexNum;k++)                      //判斷極點i j之間是否顛末k
        for(i=0;i<vertexNum;i++線上麻將朋友)  
            for(j=0;j<vertexNum;j++)  
                if(dist[i][k]+dist[k][j]<dist[i][j])
				{   dist[i][j]=dist[i][k]+dist[k][j];  
                    path[i][j]=path[i][k]+"大眾-公眾+path[k][j];  
                } 
}  
void MGraph::print()    //結點m到n的最短路徑  
{    int a,b,i;  
	cout<<公眾圖的一切路徑以下:"大眾<<endl;  
	for(i=0;i<vertexNum;i++)  //輸入圖的一切路徑信息
    {   for(int j=0;j<vertexNum;j++)  
           cout<<setw(10)<<setiosflags(ios::left)<<path[i][j]<<"大眾 公眾;    //10個字符地位,且左對齊
        cout<<endl;  
    }  
	cout<<"大眾圖的一切路徑長以下:"大眾<<endl;  
    for(i=0;i<vertexNum;i++)  //輸入圖的各邊長信息
    {  for(int j=0;j<vertexNum;j++)  
		cout<<setw(3)<<setiosflags(ios::left)<<dist[i][j]<<"大眾 "大眾;   //3個字符地位,且左對齊
       cout<<endl;  
    }  
    cout<<"大眾您想相識哪兩個點的最短路徑?請輸出這兩個點"大眾<<endl;  
    string ch1,ch2;  
    cin>>ch1>>ch2;        //輸出要判斷是的極點,請輸出極點字符。       
    for(i=0;i<vertexNum;i++)  
        if(vertex[i] == ch1) a=i;  
    for(i=0;i<vertexNum;i++)  
        if(vertex[i] == ch2) b=i;  
    cout<<ch1<<公眾到"大眾<<ch2<<"大眾的最短路徑為:"大眾<<path[a][b]<<公眾長度為"大眾<<dist[a][b]<<endl;  
	system(公眾pause公眾);
}  
     
int main()  
{  int n,e;
   string ch;  
   cout<<公眾請輸出極點數以及邊數,空格格開:公眾<<endl;  
   cin>>n>>e;
   cout<<公眾請輸出依次輸出各個極點字符串:"大眾<<endl;  
   cin>>ch;
    MGraph m(ch,n,e);  
    m.Floyd();  
    m.print();  
   地下539包牌 return 0;  
}  

法式運轉時界面以下:

人人可以輸出別的圖形進行驗證。祝人人勝利。

【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。