package test;
import java.util.Scanner;
import static java.lang.Integer.min;
public class demo7 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] cost = new int[100][100];
//初始化费用数组
for (int i=1;i<=n-1;i++){
for(int j=i+1;j<=n;j++){
cost[i][j] =sc.nextInt();
}
}
dp(cost,n);
System.out.println("最小费用为:"+cost[1][n]);
}
public static void dp(int[][] cost,int n){
for(int i =1;i<=n;i++){
cost[i][i] = 0;
}
for(int i=1;i<=n-1;i++){
for(int j=i+1;j<=n;j++){
int v = cost[i][j]; //取出i到j的费用
//遍历找到每一个中转点
for(int k =i+1;k<=j-1;k++){
v = min(v,cost[i][k]+cost[k][j]);
}
cost[i][j] = v;
}
}
}
}
租用游艇问题(动态规划)
最新推荐文章于 2023-12-20 06:37:51 发布