- package com.eshore.sweetop.cupidity;
- import java.util.ArrayList;
- import java.util.List;
- public class Quest {
- Qt[] qt = { new Qt(4, 70), new Qt(2, 60), new Qt(4, 50), new Qt(3, 40),
- new Qt(1, 30), new Qt(4, 20), new Qt(6, 10) };
- //复杂度n^2
- public void greey(){
- Qt[] q=new Qt[qt.length];
- List<Qt> list=new ArrayList<Qt>();
- for (int i = 0; i < q.length; i++) {
- int j=0;
- for (j = qt[i].delay-1; j >=0; j--) {
- if(q[j]==null){
- q[j]=qt[i];
- break;
- }
- }
- if(j<0){
- list.add(qt[i]);
- }
- }
- for (int i = 0; i < q.length; i++) {
- if(q[i]!=null)
- System.out.println(q[i]);
- }
- for (Qt qt : list) {
- System.out.println(qt);
- }
- }
- class MList extends ArrayList<Qt>{
- int max=0;
- @Override
- public boolean add(Qt o){
- super.add(o);
- if(o.delay>max){
- max=o.delay;
- }
- return true;
- }
- }
- //想了好久才想出的复杂度n的算法
- public void greey2(){
- MList ml=new MList();
- MList ml2=new MList();
- for (int i = 0; i < qt.length; i++) {
- if(!(qt[i].delay<=ml.max && ml.max<ml.size()+1)){
- ml.add(qt[i]);
- }else{
- ml2.add(qt[i]);
- }
- }
- Qt[] qt2=new Qt[ml.size()];
- for (int i = 0; i < ml.size(); i++) {
- qt2[i]=ml.get(i);
- }
- Qt[] q=sort(qt2,10);
- for (int i = 0; i < q.length; i++) {
- System.out.println(q[i]);
- }
- for (int i = 0; i < ml2.size(); i++) {
- System.out.println(ml2.get(i));
- }
- }
- public Qt[] sort(Qt a[],int k){
- Qt[] b=new Qt[a.length];
- //100是基数,可以处理100以下的排序,根据实际情况调整
- int[] c=new int[k];
- for (int i = 0; i < a.length; i++) {
- c[a[i].delay]=c[a[i].delay]+1;
- }
- for (int i = 1; i < c.length; i++) {
- c[i]=c[i]+c[i-1];
- }
- for (int i = b.length-1; i >-1 ; i--) {
- b[c[a[i].delay]-1]=a[i];
- c[a[i].delay]=c[a[i].delay]-1;
- }
- return b;
- }
- public static void main(String[] args) {
- Quest q=new Quest();
- // q.greey();
- q.greey2();
- }
- }
- class Qt {
- static int count=1;
- final int id=count++;
- int delay;
- int waste;
- Qt(int delay, int waste) {
- this.delay = delay;
- this.waste = waste;
- }
- public String toString(){
- return "{id="+id+",delay="+delay+",waste="+waste+"}";
- }
- }