贪心算法——活动安排
来源:互联网 发布:nba2k18ios捏脸数据 编辑:程序博客网 时间:2024/05/20 06:50
问题描述:活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。
思路:先将活动按结束时间非递减进行排序,然后每一次贪心选择满足条件的最小结束时间的活动
代码如下:(java实现)
import java.util.Scanner;public class ActivityArrange {static int count;/** * 贪心算法,每次取满足要求且结束时间最小的活动 */static void greedselector(int [][]a,int n){boolean []b=new boolean[n];//存放被选中的活动b[0]=true;int j=0;for(int i=j+1;i<n;i++){if(a[i][0]>=a[j][1]){b[i]=true;j=i;}}for(int i=0;i<b.length;i++){if(b[i]){count++;}}System.out.println("最多活动数:"+count);System.out.println("这些活动有(其中一种情况):");for(int i=0;i<b.length;i++){if(b[i]){System.out.println("("+a[i][0]+","+a[i][1]+")");}}}public static void main(String[] args) {Scanner input=new Scanner(System.in);int n=input.nextInt();//总共活动数int [][]a=new int[n][2];//二维数组表示每一个活动的开始时间与结束时间for(int i=0;i<n;i++){a[i][0]=input.nextInt();a[i][1]=input.nextInt();}//使用简单选择排序,按结束时间非递减排列for(int i=0;i<n-1;i++){for(int j=i+1;j<n;j++){if(a[j][1]<a[i][1]){int t=a[j][1];a[j][1]=a[i][1];a[i][1]=t;int m=a[j][0];a[j][0]=a[i][0];a[i][0]=m;}}}greedselector(a,n);}}
阅读全文
0 0
- 贪心算法——活动安排问题
- 贪心算法——活动安排问题
- 贪心算法——活动安排问题
- 贪心算法——活动安排问题
- 贪心算法——活动安排
- 贪心算法——活动安排问题
- 贪心算法--活动安排
- 【计算机算法分析】贪心算法——活动安排问题
- 贪心算法——hdu2037——活动安排问题
- 活动安排问题——贪心算法应用(2)
- 0021算法笔记——【贪心算法】贪心算法与活动安排问题
- 0021算法笔记——【贪心算法】贪心算法与活动安排问题
- 0021算法笔记——【贪心算法】贪心算法与活动安排问题
- 0021算法笔记——【贪心算法】贪心算法与活动安排问题
- 活动安排 贪心算法实现
- 贪心算法_活动安排
- 活动安排问题 贪心算法
- 贪心算法(活动安排)
- Laravel框架关键技术解析(二)
- 环信推送详解
- 进程学习12--alarm
- 深入探討DE2-70的『Error:Can't place pins assigned to pin location Pin_AD25 (IOC_X95_Y2_N1)』錯誤訊息的原因與解決方式
- WinAPI: DrawTextEx
- 贪心算法——活动安排
- Object::connect: No such slot 问题解决办法
- ios常用的宏定义(转载)
- php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
- java实现定时任务的方法
- C#静态与非静态 类,成员、结构
- 社会实践调研报告-题目:大学生理财能力调查与分析
- 求欧拉函数
- 上传本地代码到GitHub