租用游艇问题

来源:互联网 发布:ubuntu系统更新命令 编辑:程序博客网 时间:2024/04/28 22:21


采用动态规划

主要思想:先算出所有经过2个站的最小值,然后再算出所有经过3个站的最小值(依据于2个站的最小值),一直到n个站即可得到所求值。

package shiyansi;

public class ZhuYongYouTing {
 public static void main(String []args) {
  int n = 3;
  int w[][] = new int[n][n];
  w[0][1] = 5;
  w[0][2] = 15;
  w[1][2] = 7;
  int min[][] = new int[n][n];
  for(int i=0;i<n;i++) {
   min[i][i] = 0;
  }
  //把所有的经过1,2,3...n个站的租金赋值
  for(int r=1;r<n;r++) {
   for(int i=0;i+r<n;i++) {
    min[i][i+r] = w[i][i+r];
   }
  }
  //开始比较
  for(int r=2;r<=n;r++) {
   for(int i=0;i+r<n;i++) {
    int j = i+r;
    int temp = min[i][i+1]+min[i+1][j];
    if(temp < min[i][j]) {
     min[i][j] = temp;
    }
    for(int k=i+1;k<j;k++) {
     temp = min[i][k] + min[k][j];
     if(temp < min[i][j]) {
      min[i][j] = temp;
     }
    }
   }
  }
  System.out.println("最小值为:"+min[0][n-1]);
 }
}

0 0
原创粉丝点击