博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
活动安排问题
阅读量:5453 次
发布时间:2019-06-15

本文共 2257 字,大约阅读时间需要 7 分钟。

活动安排问题

一问题分析

enter description here
二代码实现

java

package greedySelctor;

import java.io.BufferedWriter;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Comparator;

public class bin

{

public static void main(String[] args) throws IOException{

// int []s= {0,1,3,0,5,3,5,6,8,8,2,12};

// int []f= {0,4,5,6,7,8,9,10,11,12,13,14};
int []s= {0,1,2,3,4,5,6};
int []f= {0,10,9,8,7,11,20};
element []ele=new element[s.length-1] ;
for(int i=1; i<s.length; i++)
{
ele[i-1] =new element(s[i], f[i], i);
}
greedySelctor myGreedySelctor=new greedySelctor(ele);
}

}

class greedySelctor
{
element []ele;
int count=0; //被安排活动的个数
public greedySelctor(element []ele) throws IOException
{
this.ele=ele;
GreedySelctor();
display();
}
public void GreedySelctor()
{
Arrays.sort(ele, new Comparator(){
//传入的时候由用户自己选
@Override
public int compare(element o1, element o2) {
// TODO Auto-generated method stub
int finsh1 = o1.f;
int finsh2 = o2.f;
if (finsh1>finsh2)
{
return 1;
}
else
{
if (finsh1<finsh2)
{
return -1;
}else
{
return 0;
}

}					}	});	ele[0].x=1;  //第一个活动一定会被选上	int f=ele[0].f;	count++;	for(int i=1; i

}

class element //活动类
{
int s; //开始时间
int f; //结束
int x; //是否被选中
int i; //编号
public element(int s,int f,int i)
{
this.s=s;
this.f=f;
this.i=i;
}
}

三 运行结果

ele[0]:
i: 1
s: 1
f: 4
x: 1
+++++++++++++++++++
ele[1]:
i: 2
s: 3
f: 5
x: 0
+++++++++++++++++++
ele[2]:
i: 3
s: 0
f: 6
x: 0
+++++++++++++++++++
ele[3]:
i: 4
s: 5
f: 7
x: 1
+++++++++++++++++++
ele[4]:
i: 5
s: 3
f: 8
x: 0
+++++++++++++++++++
ele[5]:
i: 6
s: 5
f: 9
x: 0
+++++++++++++++++++
ele[6]:
i: 7
s: 6
f: 10
x: 0
+++++++++++++++++++
ele[7]:
i: 8
s: 8
f: 11
x: 1
+++++++++++++++++++
ele[8]:
i: 9
s: 8
f: 12
x: 0
+++++++++++++++++++
ele[9]:
i: 10
s: 2
f: 13
x: 0
+++++++++++++++++++
ele[10]:
i: 11
s: 12
f: 14
x: 1
+++++++++++++++++++

四 总结收获

  1. 贪心算法的关键在于问题具有贪心性质

  2. 学习到了对象数组排序的方法

    Arrays.sort(ele, new Comparator(){
    //传入的时候由用户自己选
    @Override
    public int compare(element o1, element o2) {
    // TODO Auto-generated method stub
    int finsh1 = o1.f;
    int finsh2 = o2.f;
    if (finsh1>finsh2)
    {
    return 1;
    }
    else
    {
    if (finsh1<finsh2)
    {
    return -1;
    }else
    {
    return 0;
    }

    }			}});具体解释见链接(https://blog.csdn.net/qq_37937537/article/details/80445731)

    五 不足

    代码写的不够熟练

转载于:https://www.cnblogs.com/Howbin/p/9917997.html

你可能感兴趣的文章
CentOS 7 安装 Jenkins
查看>>
Blue Jeans
查看>>
Common Subsequence
查看>>
poj 3070 Fibonacci
查看>>
长字符串换行word-break
查看>>
解决SMARTFORMS 中table 控件单行跨页的问题
查看>>
自定义navigationBar的高度
查看>>
Windows Time服务无法启动 错误5拒绝访问
查看>>
java-try,return和finally相遇时的各种情况
查看>>
泊松分酒
查看>>
_DataStructure_C_Impl:静态链表
查看>>
各种Nand的总结
查看>>
获取文件中汉字个数
查看>>
java核心技术----Object类
查看>>
共享本地的无线网络
查看>>
测试职业规划 (转载)
查看>>
php等比例生成缩略图
查看>>
【VS开发】在VS2010中开发ActiveX控件设置测试容器的方式
查看>>
【并行计算-CUDA开发】__syncthreads的理解
查看>>
python实现Agent守护进程
查看>>