问题描述:动态规划:求从点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;
}
程序运行结果展示:
知识点总结:动态规划
学习心得:课本的源码,主要目的是自己敲一遍帮助理解