Java求解股票经纪人问题的具体代码
时间: 2023-08-10 16:08:04 浏览: 117
Java背包问题求解实例代码
股票经纪人问题是一道经典的动态规划问题,其思路是将问题拆解为子问题,并记录下已经解决的子问题的最优解,逐步求解出整个问题的最优解。
以下是Java的实现代码:
```java
public class StockBroker {
public static void main(String[] args) {
int[] prices = {7, 1, 5, 3, 6, 4};
int maxProfit = maxProfit(prices);
System.out.println("最大利润为:" + maxProfit);
}
public static int maxProfit(int[] prices) {
if (prices == null || prices.length < 2) {
return 0;
}
int n = prices.length;
int[] dp = new int[n];
int minPrice = prices[0];
for (int i = 1; i < n; i++) {
minPrice = Math.min(minPrice, prices[i]);
dp[i] = Math.max(dp[i - 1], prices[i] - minPrice);
}
return dp[n - 1];
}
}
```
其中,`maxProfit`方法接收一个整数数组`prices`作为输入,返回该数组中最大利润。首先判断输入数组是否为空或长度是否小于2,如果是,则直接返回0。然后,创建一个长度为n的数组`dp`用于记录子问题的最优解。接着,设`minPrice`为当前所有股票价格的最小值,遍历整个数组,对于每个股票价格,计算当前价格与`minPrice`之差,即当前股票卖出能够得到的最大利润,并与`dp[i-1]`(即前一天的最大利润)取最大值,更新`dp[i]`。最后,返回`dp[n-1]`即为整个问题的最优解。
阅读全文