动态规划之求路径最短
把图转换为上图,观察得知,可以用一个二维数组来实现此图
#include<stdio.h>
int flag=1;
int max(int* a,int* b){
if(*a>=*b){
flag=1;
return *a;
}
else {
flag=0;
return *b;
}
}
int main()
{
int a[][4]={{2},{5,100},{100,0,65},{50,60,20,0}};
int s[][4]={{},{},{},{50,60,20,0}}; //用来记录每一个路径的最大路径和
int i=0,j,cow=4,row=4;
while(i<=3){
s[row-1][i]=a[row-1][i];
i++;
}
for(i=row-2;i>=0;i--){
for(j=0;j<=i;j++){
s[i][j]=max(*(s+i+1)+j,*(s+i+1)+j+1)+a[i][j];
}
}
printf("%d\n",s[0][0]);
}