您的位置:首页 > 其它

租用游艇问题

2014-10-18 16:29 183 查看

采用动态规划

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

package shiyansi;

public class ZhuYongYouTing {

 public static void main(String []args) {

  int n = 3;

  int w[][] = new int

;

  w[0][1] = 5;

  w[0][2] = 15;

  w[1][2] = 7;

  int min[][] = new int

;

  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]);

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: