贪心-自命题-作业排期

本文介绍了一种基于贪心算法的任务调度方法,旨在通过合理安排不同收益和期限的作业以实现最大化的总收益。该方法适用于每个作业占用相同时间单位的情况。

作业排期

某机器上需要处理n个作业,每个作业都有一个收益值p与完成期限d。每个作业均占时1个时间单位。

请你安排作业,得到最大收益。

输入格式

n
p0 p1 ... pn (收益值非递减排练)
d0 d1 ... dn

输出格式

总收益
作业序列(编号从0开始)

输入样例

6
90 80 50 30 20 10
1 2 1 3 4 3

输出样例

220

[0, 1, 3, 4]

微笑分析:既然每个作业占时都一样,肯定先对收益排个序(此题的数据已帮你排好),能做就做,有冲突放弃。标准的贪心,局部最优来达到全局最优。

维护一个list。list[i]=j表示在当前遍历过程中,编号为 j 的作业的期限是第 i 大的。注意在遍历过程中,list中的内容可能会不断变化,即同一下标的元素也会不断变化。

微笑代码:

package com.likeyihu;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
	static Scanner scanner;
	int n;
	//收益 与 最后期限
	int[] p,d;
	List list=new ArrayList<>();
	int sum=0;
	void read(){
		n=scanner.nextInt();
		p=new int[n];
		d=new int[n];
		int i=0;
		while(i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值