主题:求两点之间的最短距离
#include<iostream>
#include<vector>
using namespace std;
int FL(int x,int y,int a[8][8])
{
int min1(int a,int b);
vector<int>Lvct(7,100);
int i=0,j, min;
Lvct.insert(&x,0);
for(i=0;i<Lvct.size();i++)
if(y==Lvct[i])
{
min=a[x][0];
for(i=0;i<8;i++)
if(a[x][i]!=0)
if(a[x][i]<min)
{
min=a[x][i];
j=i;
}
Lvct.erase(&i);
for(i=0;i<Lvct.size();i++)
if(a[j][Lvct[i]]!=0)
Lvct[Lvct[i]]=min1(Lvct[Lvct[i]],Lvct[j]+a[j][Lvct[i]]);
}
return Lvct[y];
}
int min1(int a,int b)
{
if(a<b)
return a;
else
return b;
}
void main()
{
int i,j,k,m,n,a[8][8];
cout<<"please input your array a[8][8]:"<<endl;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
cin>>a[i][j];
cout<<endl;
cout<<"input your two points:"<<endl;
cin>>m>>n;
cout<<endl;
k=FL(m,n,a);
cout<<k<<endl;
}
#include<vector>
using namespace std;
int FL(int x,int y,int a[8][8])
{
int min1(int a,int b);
vector<int>Lvct(7,100);
int i=0,j, min;
Lvct.insert(&x,0);
for(i=0;i<Lvct.size();i++)
if(y==Lvct[i])
{
min=a[x][0];
for(i=0;i<8;i++)
if(a[x][i]!=0)
if(a[x][i]<min)
{
min=a[x][i];
j=i;
}
Lvct.erase(&i);
for(i=0;i<Lvct.size();i++)
if(a[j][Lvct[i]]!=0)
Lvct[Lvct[i]]=min1(Lvct[Lvct[i]],Lvct[j]+a[j][Lvct[i]]);
}
return Lvct[y];
}
int min1(int a,int b)
{
if(a<b)
return a;
else
return b;
}
void main()
{
int i,j,k,m,n,a[8][8];
cout<<"please input your array a[8][8]:"<<endl;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
cin>>a[i][j];
cout<<endl;
cout<<"input your two points:"<<endl;
cin>>m>>n;
cout<<endl;
k=FL(m,n,a);
cout<<k<<endl;
}