动态规划中等java范例
时间: 2024-07-09 09:01:01 浏览: 80
动态规划是一种在计算机科学中用于优化复杂问题的算法技术,通常用于求解最优化问题。在Java中,我们可以利用数组或二维数组来实现动态规划。下面是一个简单的斐波那契数列求和的动态规划示例:
```java
public class DynamicProgrammingExample {
public static int fibonacciSum(int n) {
if (n <= 0) return 0;
// 创建一个长度为n+1的一维数组来存储中间结果
int[] dp = new int[n + 1];
dp = 0; // 基础情况:f(0) = 0
dp = 1; // 第二个基本情况:f(1) = 1
// 使用循环填充dp数组,计算前n项的和
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2]; // 根据动态规划性质:f(i) = f(i-1) + f(i-2)
}
return dp[n]; // 返回第n项的值,即斐波那契数列和
}
public static void main(String[] args) {
int n = 10; // 需要求和到的斐波那契数的位置
System.out.println("Fibonacci sum up to " + n + " is: " + fibonacciSum(n));
}
}
```
在这个例子中,我们解决了斐波那契数列的问题,但动态规划的应用远远不止于此,比如背包问题、最长公共子序列、最短路径等问题都可以用动态规划解决。
阅读全文