假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法来进行安排。试编程实现对于给定的k个待安排活动,计算使用的最少会场。输入数据中,第一行是k的值,接下来的k行中,每行有2个正整数,分别表示k个待安排活动的开始时间和结束时间,时间以0点开始的分钟计。输出为最少的会场数。
输入数据示例
5
1 23
12 28
25 35
27 80
36 50
输出数据
3
/**
* @author WL-PC
*题目二:会场安排问题
*假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。
*设计一个有效的贪心算法来进行安排。试编程实现对于给定的k个待安排活动,
*计算使用的最少会场。输入数据中,第一行是k的值,接下来的k行中,每行有2个正整数
*,分别表示k个待安排活动的开始时间和结束时间,时间以0点开始的分钟计。
*输出为最少的会场数。
*
*/
public class MeetingArrangements {
<span style="white-space:pre"> </span>/**
<span style="white-space:pre"> </span> * 测试数据///1,12,25,17,36/23,28,35,80,505
<span style="white-space:pre"> </span> * 测试数据///1,12,18,25,27,36/23,28,30,35,80,506
<span style="white-space:pre"> </span> * 测试数据///1,12,18,25,27,36,51/23,28,30,35,80,50,407
<span style="white-space:pre"> </span> * 测试数据///1,12,18,25,27,36,37,51/23,28,30,35,80,50,60,408//此组数据不对
<span style="white-space:pre"> </span> */
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>//记录会议开始时间
<span style="white-space:pre"> </span>public int [] s = new int[]{1,12,18,25,27,36,37,51};
<span style="white-space:pre"> </span>//记录会议结束时间
<span style="white-space:pre"> </span>public int [] f = new int[]{23,28,30,35,80,50,60,40};
<span style="white-space:pre"> </span>//记录会议个数
<span style="white-space:pre"> </span>public int n = 8;
<span style="white-space:pre"> </span>//记录会场个数
<span style="white-space:pre"> </span>public int count = 0;
<span style="white-space:pre"> </span>//最坏情况会场使用个数
<span style="white-space:pre"> </span>public int [] a = new int[n];
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>public void minMeetings(){
<span style="white-space:pre"> </span>int j = 0;
<span style="white-space:pre"> </span>//int k = 0;
<span style="white-space:pre"> </span>a[0] = f[0];
<span style="white-space:pre"> </span>for(int i = 1;i < n;i++){
<span style="white-space:pre"> </span>for(int k = 0;k <= count;k++){
<span style="white-space:pre"> </span>if(s[i] > a[k]){
<span style="white-space:pre"> </span>a[k] = f[i];
<span style="white-space:pre"> </span>break;
<span style="white-space:pre"> </span>}else{
<span style="white-space:pre"> </span>a[j++] = f[i];
<span style="white-space:pre"> </span>count++;
<span style="white-space:pre"> </span>System.out.println("===="+j+"===="+count);
<span style="white-space:pre"> </span>break;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>System.out.println("========"+count);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>public static void main(String[] args) {
<span style="white-space:pre"> </span>new MeetingArrangements().minMeetings();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
}