动态规划题——最短路径问题

xiaoxiao2021-02-28  70

问题描述:动态规划:求从点0到点6的最短路径及其开销 作者:何知令

完成时间:2017年5月7日

代码:

/* 问题描述:动态规划:求从点0到点6的最短路径及其开销 作者:何知令 完成时间:2017年5月7日 */ #include <stdio.h> #include <stdlib.h> #define n 7 #define x 9999 int map[n][n]= { {x,4,5,8,x,x,x}, {x,x,x,6,6,x,x}, {x,x,x,5,x,7,x}, {x,x,x,x,8,9,9}, {x,x,x,x,x,x,5}, {x,x,x,x,x,x,4}, {x,x,x,x,x,x,x} }; int main() { int cost[n]; int path[n]= {0}; int i,j; int minCost,minNode; cost[0]=0; for(i=1; i<n; i++) { minCost=x; for(j=0; j<i; j++) { if(map[j][i]!=x) if((cost[j]+map[j][i])<minCost) { minCost=cost[j]+map[j][i]; minNode=j; } } cost[i]=minCost; path[i]=minNode; } printf("最短路径的开销为:%d\n",cost[n-1]); printf("从终点向前推,最短路径经过了:"); i=n-1; while(i!=0) { printf(" %d",path[i]); i=path[i]; } printf("\n"); return 0; } 程序运行结果展示:

知识点总结:动态规划

学习心得:课本的源码,主要目的是自己敲一遍帮助理解

转载请注明原文地址: https://www.6miu.com/read-80886.html

最新回复(0)