qq_52343978 2021-12-08 14:05 采纳率: 100%
浏览 92
已结题

用贪心算法解决tsp问题

include
using namespace std;
const int Max=10; //最多顶点数
class Graph{
public:
Graph(int a[], int n, int e); //构造 n个顶点 e条边的图,a[]存放顶点名称
~Graph(){} //析构函数
void Ne(int v); //求最短路径
private:
int vertex[Max]; //存放顶点
int arc[Max][Max]; //存放边
int vertexNum, arcNum; //顶点和边数
int visited[Max]={0};
};
Graph::Graph(int a[], int n, int e){
int i,j,k,weight;
vertexNum=n; arcNum=e;
for(i=0; i<vertexNum; i++){
cin>>j;
a[i]=j;
}
for(i=0;i<vertexNum;i++) //存储图的顶点信息
vertex[i]=a[i];
for(i=0;i<vertexNum;i++) //初始化图的邻接矩阵
for(j=0;j<vertexNum;j++)
arc[i][j]=1000;
for(k=0;k<arcNum;k++){ //存储图的边信息
cout<<"请输入边的两个顶点的序号及权值:" ;
cin>>i>>j>>weight;
arc[i][j]=weight; arc[j][i]=weight;
}
}
void Graph::Ne(int v){
int s=0; //总路程长度
int temp=100;
cin>>v; //输入出发的城市
int v0=v; //保存出发城市
visited[v-1]=1;
for(int i=0; i<vertexNum; i++){
cout<<vertex[v-1]<<"-->";
for(int j=0; j<vertexNum; j++){
if(visited[j]==0 && arc[v][j]<temp){
temp=arc[v][j];
v=j;
}
}
visited[v]=1;
s=s+temp; }
cout<<vertex[v0-1]<<endl;
// for(int i=0; i<vertexNum; i++){ //检查
// cout<<visited[i]<<" ";
// }
cout<<"总路程为:"<<s+arc[v][v0]<<endl;}
int main(){
int num, n, e; //城市序号 ,城市个数,边数 int A[n]; //存放顶点
cout<<"请输入城市数目及边数:"<<endl;
cin>>n>>e;
cout<<"请输入城市信息(城市序号):"<<endl; //输入城市序号
Graph G(A, n, e);
G.Ne(1);
return 0;
}

img


为什么输出不对

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月16日
    • 创建了问题 12月8日

    悬赏问题

    • ¥20 ESP32使用MicroPyhon开发,怎么获取485温湿度的值,温湿度计使用的鞋子是Modbus RTU
    • ¥50 苹果MGIE项目部署缺少emb权重
    • ¥15 采用ansys进行机翼在特定路径下的打孔过程中的受力分析
    • ¥15 单片机adb主机连接手机,usb调试密钥无法保存
    • ¥15 已知X和Y有以下关系,求X和Y的关系式
    • ¥15 net core 同时编辑怎么防止数据多保存了
    • ¥15 matlab做ba模型让其在ba和er规则下生长
    • ¥15 请问Quartus的Verilog代码怎么写?
    • ¥100 Mac 版foxmail 收邮件问题
    • ¥15 QWebEngineView