贪心算法求解活动安排<算法分析>
一、实验内容及要求
1.要求按贪心算法原理求解问题;
2.要求手工输入s[10]及f[10],其中注意自己判断s[i]<f[i];
3.要求显示所有活动及最优活动安排的i事件列表。
二、实验步骤
1、手工输入活动事件;
2、输出活动s数组及f数组;
2、计算最优活动安排后,输出最优i事件列表。
输入:
请输入s数组:
请输入f数组:
输出
s=15,3,2,8.....
f=18,5,4,10.....
i=1,5,8
Java源代码:
package shiyan;
import java.util.Scanner;
public class shiyan3 {
public static void main(String[] args) {
int number=10; //活动数量10个
int[] s = new int[number]; //开始时间数组
int[] f = new int[number]; //结束时间数组
System.out.println("请分别输入"+number+"个活动的开始时间:");
Scanner in_s = new Scanner(System.in);//循环输入开始时间数组
for(int i=0;i<number;i++){
s[i]=in_s.nextInt();}
System.out.println("请分别输入"+number+"个活动的结束时间:");
Scanner in_f = new Scanner(System.in);//循环输入结束时间数组
for(int i=0;i<number;i++){
f[i]=in_f.nextInt();}
System.out.println("开始时间数组s[10]:");
for(int i=0;i<number;i++){ //输出两个数组
System.out.print("["+s[i]+"]"); }
System.out.println("\n结束时间数组f[10]:");
for(int i=0;i<number;i++){
System.out.print("["+f[i]+"]"); }
boolean[] a=new boolean[s.length]; //一个与活动数目等长的 boolean型数组记录每个活动的状态
shiyan3 ac = new shiyan3();
int counts=ac.Activity_arrangement(s, f, a);
System.out.println("\n活动集合中最大相容活动数量为:"+counts);
for(int i=1;i<=s.length-1;i++){
if(a[i]){
System.out.println("第"+i+"活动被选中,其开始时间为:"+s[i-1]+",结束时间为:"+f[i-1]); } } }
public int Activity_arrangement(int[] s,int[] f,boolean[] a){
int n=s.length-1;
a[1]=true; //第一个活动被选中
int j=1;
int count=1; //被选中活动的数量,默认第一个活动被选中
for(int i=2;i<=n;i++){
if(s[i]>=f[j]){ //下一个活动开始时间大于大于等于上一个活动结束时间
a[i]=true;
j=i;
count++; }
else{
a[i]=false;
}
}
return count;
运行结果如下:
贪心算法求解活动安排<算法分析>的更多相关文章
- [C++] 贪心算法之活动安排、背包问题
一.贪心算法的基本思想 在求解过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解. 从贪心算法的定义可以看出,贪心算法不是从整体上考 ...
- C++贪心算法实现活动安排问题
问题描述: 设有n个活动的集合E={1,2,…,n},其中,每个活动都要求使用同一资源,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且s ...
- 51nod贪心算法入门-----活动安排问题
有若干个活动,第i个开始时间和结束时间是[Si,fi),只有一个教室,活动之间不能交叠,求最多安排多少个活动? 输入 第1行:1个数N,线段的数量(2 <= N <= 10000) 第2 ...
- 51nod贪心算法入门-----活动安排问题2
题目大意就是给几个活动,问要几个教室能够弄完. 这个题目的想法就是把活动的开始——结束的时间看做是数轴上的一段线段,教室的个数就是在某点的时间厚度,求最大的时间厚度就是所需要的教室个数. #inclu ...
- 基于贪心算法求解TSP问题(JAVA)
概述 前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 详细 代码下载:http://www.de ...
- 雷达覆盖,贪心,类似活动安排(POJ1328)
题目链接:http://poj.org/problem?id=1328 解题报告: 1.按照头结点排序. #include <cstdio> #include <cmath> ...
- 用贪心算法近似求解 Loading Balance 问题(作业调度的负载均衡)
一,Loading Balance 问题描述:有 m 台相同的机器及 n 个作业,其中 m={M(1),M(2),……M(m)}.n = {J(1),J(2),……J(n)}.每个作业都有一个处理时间 ...
- 贪心算法和动态规划[zz]
http://www.cnblogs.com/asuran/archive/2010/01/26/1656399.html 贪心算法 1.贪心选择性质 所谓贪心选择性质是指所求问题的整体最优解可以通过 ...
- 『嗨威说』算法设计与分析 - 贪心算法思想小结(HDU 2088 Box of Bricks)
本文索引目录: 一.贪心算法的基本思想以及个人理解 二.汽车加油问题的贪心选择性质 三.一道贪心算法题点拨升华贪心思想 四.结对编程情况 一.贪心算法的基本思想以及个人理解: 1.1 基本概念: 首先 ...
随机推荐
- poj 3295 Tautology 伪递归
题目链接: http://poj.org/problem?id=3295 题目描述: 给一个字符串,字符串所表示的表达式中p, q, r, s, t表示变量,取值可以为1或0.K, A, N, C, ...
- 图论/位运算 Codeforces Round #285 (Div. 2) C. Misha and Forest
题目传送门 /* 题意:给出无向无环图,每一个点的度数和相邻点的异或和(a^b^c^....) 图论/位运算:其实这题很简单.类似拓扑排序,先把度数为1的先入对,每一次少一个度数 关键在于更新异或和, ...
- Service官方教程(6)Bound Services主要用来实现通信服务,以及3种实现通信的方案简介。
1.Bound Services A bound service is the server in a client-server interface. A bound service allows ...
- AJPFX实列判断一个字符串是不是对称字符串
import java.util.Scanner; /** * 判断一个字符串是否是对称字符串 */ public class StringDemo { public static vo ...
- poj2886 Who Gets the Most Candies?
思路: 先打反素数表,即可确定因子最多的那个数.然后模拟踢人的过程确定对应的人名.模拟的过程使用线段树优化加速. 实现: #include <cstdio> #include <cs ...
- es6核心特性-数组扩展
1. Array.from() : 将伪数组对象或可遍历对象转换为真数组 如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,称为伪数组.典型的伪数组有函数的argu ...
- CCF|分蛋糕|Java
import java.util.Scanner; public class tyt { public static void main(String[] args) { Scanner in = n ...
- VMware虚拟机下载与安装
VMware下载与安装 一.虚拟机的下载 1.进入VMware官网,点击左侧导航栏中的下载,再点击图中标记的Workstation Pro,如下图所示. 2.根据操作系统选择合适的产品,在这里以Win ...
- iOS---iPad开发及iPad特有的特技
iPad开发简单介绍 iPad开发最大的不同在于iPhone的就是屏幕控件的适配,以及横竖屏的旋转. Storyboard中得SizeClass的横竖屏配置,也不支持iPad开发. 1.在控制器中得到 ...
- ERROR 1 (HY000): Can't create/write to file '/tmp/#sql_830_0.MYI' (Errcode: 13)
mysql操作时,出现报错. 执行describe 命令时, 临时文件目录没有创建或者无写入权限:于是: cd /var/lib/mysql/ #进入mysql数据目录 mkdir tmp #创建需要 ...