租用游艇问题-dp
Posted nuist__NJUPT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了租用游艇问题-dp相关的知识,希望对你有一定的参考价值。
思想:自底向上,用dp[0][n-2]存储最少租金。
方式1:键盘输入,控制台输出
import java.util.Scanner;
public class HireYacht {
public static int dynamic(int n, int [][] dp){
for(int i=n-2; i>0; i--){
for(int j=0; j<n-i;j++) {
if (dp[i][n-i-2] + dp[i - 1][j] <= dp[i - 1][n-i-1]) {
dp[i - 1][n-i-1] = dp[i][n-i-2] + dp[i - 1][j] ;
}
}
}
return dp[0][n-2] ;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in) ;
int n = input.nextInt() ;
int [][] dp = new int [n][n] ;
for(int i=0; i<n-1; i++){
for(int j=0; j<n-i-1; j++){
dp[i][j] = input.nextInt() ;
}
}
System.out.println(dynamic(n, dp));
}
}
方式2:文件流输入输出。
import java.io.*;
public class HireYacht1 {
static String line ;
static int n, temp, j=0, k=0 ;
static int [][] dp = new int [10000][10000] ;
public static int dynamic(int n, int [][] dp){
for(int i=n-2; i>0; i--){
for(int j=0; j<n-i;j++) {
if (dp[i][n-i-2] + dp[i - 1][j] <= dp[i - 1][n-i-1]) {
dp[i - 1][n-i-1] = dp[i][n-i-2] + dp[i - 1][j] ;
}
}
}
return dp[0][n-2] ;
}
public static void main(String[] args) {
try(FileInputStream fileInputStream = new FileInputStream("D:\\\\study\\\\input.txt");
DataInputStream dataInputStream = new DataInputStream(new BufferedInputStream(fileInputStream))){
line = dataInputStream.readLine() ;
n = Integer.parseInt(line) ;
temp = n ;
while(n > 1){
line = dataInputStream.readLine() ;
String [] s = line.split("[ ]") ;
for(int i=0; i<s.length; i++){
dp[j][k] = Integer.parseInt(s[i]) ;
if(k<n-i-1){
k ++ ;
}
}
j ++;
k = 0 ;
n -- ;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try(FileOutputStream fileOutputStream = new FileOutputStream("D:\\\\study\\\\output.txt");
DataOutputStream dataOutputStream = new DataOutputStream(new BufferedOutputStream(fileOutputStream))) {
int result = dynamic(temp, dp) ;
dataOutputStream.writeBytes(String.valueOf(result));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上是关于租用游艇问题-dp的主要内容,如果未能解决你的问题,请参考以下文章