package model;
//价格最低时买入,价格最高时卖出,允许,当天卖出,以便于止损
import java.util.Arrays;
public class Horse {
public static void main(String[] args) {
int[] prices = {5, 3, 7, 10, 13, 4};
profit(prices); //输出
}
public static void profit(int[] prices) {
//不分组,直接算差值
//后面的减去前面的
//排序
int right = prices.length; //总共的天数
int num = (right - 1) * right / 2; //总共的可能
int[] p = new int[num];
int[] I = new int[num];
int[] J = new int[num];
int i = 0, j = right - 1;
int n = 0;
for (j = right - 1; j > 0; j--) {
for (i = 0; i < j; i++) {
p[n] = prices[j] - prices[i];//利润
I[n] = i; //买
J[n] = j;//卖
n++;
}
}
//找出最大值
int newp[] = Arrays.copyOf(p, num);
Arrays.sort(newp); //排序
int max = newp[newp.length - 1]; //最大值
int index = Arrays.binarySearch(p, max); //找到了序号,此处为数组中序号,注意下
int x = I[index] + 1;
int y = J[index] + 1;
System.out.println("第 " + x + " 天买入,第 " + y + " 天卖出,盈利 " + p[index]);
}
}
这题目是关于商品买卖利润的
报错是数组下标越界,但始终找不到原因,请指正,谢谢。