【洛谷1359】租用游艇

初始状态f[1]=0;f[2]=a[1][2];

对于每个i,有i-1个中转点j;(中转点可以为1,表示直接到达不进行中转)

这样,可以选择从1直接到达i,或从1到j,再从j到i。取两者最小值。

 1 #include
 2 #include
 3 #include
 4 using namespace std;
 5 int n,f[250],r[250][250];
 6 int main(){
 7     scanf("%d",&n);
 8     for (int i=1;i<=n-1;i++){
 9         for (int j=i+1;j<=n;j++)
10             scanf("%d",&r[i][j]);
11         f[i]=100000001;
12     }
13     f[1]=0;f[2]=r[1][2];f[n]=100000001;
14     for (int i=3;i<=n;i++)
15         for (int j=1;j//从1循环  
16             f[i]=min(f[i],f[j]+r[j][i]);
17     printf("%d",f[n]);
18     return 0;
19 }
STD

 

转载于:https://www.cnblogs.com/Absolute-Zero/p/5843721.html

你可能感兴趣的:(【洛谷1359】租用游艇)