www.pudn.com > KSP.rar > KSP1.cpp
#include#include using namespace std; #define max_vertex 7 //max_vertex 为实际城市数加一 void shortest(int cost[max_vertex][max_vertex],int dijkstra[max_vertex],int path[max_vertex],int visited[],int start,int end) { //cost[][]记录权值(不邻接的两点权值为32767),dijikstra[]记录最短路径,path[]标记路径 int visited_number,vertex,temp; for(vertex=1;vertex "< >start_city; i=1; while(start_city!=city[i]) { i++; if(i>5) { cout<<"出发地有误!请重新输入"< >start_city; } } cout<<"出发地正确!"< >end_city; while(end_city!=city[i]) { i++; if(i>6) { cout<<"目的地有误!请重新输入"< >end_city; } } i=1; temp_start=start_city.substr(0,1); //取第一个字符串,准备分块查找 temp_end=end_city.substr(0,1); //初始化索引表 char str='a'; for(int n=0;n<3;n++) { index[n].key=str; str++; } //------------- int start_position,end_position;//查找起始和终点城市的编号 start_position=search(temp_start,city,index,start_city); //start_position为城市在数组中的下标 //cout< >ch; string mid_node[max_vertex]; int mid_city=1; string temp_mid; int mid_position; int mid_store[max_vertex]; for(k=1;k >mid_node[mid_city]; temp_mid=mid_node[mid_city].substr(0,1);// mid_position=search(temp_mid,city,index,mid_node[mid_city]); mid_store[mid_city]=mid_position; //cout<<"mid_position "< >ch; } } else mid_store[0]=end_position; int same_number=0; cout<<"请输入您需要多少种备选方案"< >need_number; cout< =1) { max=32767; //根据上次删除的边初始化数组 for(vertex=1;vertex >ch; cout< 1) { sum_cost=sum_cost+cost_copy[store[temp_node_number]][store[temp_node_number-1]]; // cout<<"sum_cost "< >extra; cout< >need_number; cout< =1&&ch!='n') { max=32767; // cout<<"need_number -- "< 1) { sum_cost=sum_cost+cost_copy[store[temp_node_number]][store[temp_node_number-1]]; // cout<<"temp_node_number "<