中级农民
- 积分
- 112
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2013-9-1
- 最后登录
- 1970-1-1
|
本帖最后由 desmile 于 2019-8-23 11:16 编辑
- public static void main(String[] args) {
- Playground pg = new Playground();
- int[][] intervals1 = new int[][]{{1,3}, {4,10}, {4,6}, {9,10}};
- int[][] intervals2 = new int[][]{{1,3}, {8,9}, {2,100}, {99, 300}};
- System.out.println(pg.getMaxProfit(intervals1)); System.out.println(pg.getMaxProfit(intervals2));
- }
-
- public int getMaxProfit(int[][] intervals){
- Arrays.sort(intervals, (a,b) -> (a[1] - b[1]));
- int n = intervals.length;
- int[] dp = new int[n];
- int max = 0;
- for(int i = 0; i < n; i++) {
- dp[i] = intervals[i][1] - intervals[i][0]; // initial value is the current interval
- for(int j = 0; j < i; j++) {
- if(intervals[i][0] >= intervals[j][1]) {
- dp[i] = Math.max(dp[i], dp[j] + intervals[i][1] - intervals[i][0]); // dp[i] represents the maximum profit on if ith interval is included
- max = Math.max(max, dp[i]);
- }
- }
- }
- return max * 100;
- }
复制代码 [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
|
|