一、实验内容及要求
 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源代码:

  1. package shiyan;
  2. import java.util.Scanner;
  3. public class shiyan3 {
  4. public static void main(String[] args) {
  5. int number=10; //活动数量10个
  6. int[] s = new int[number]; //开始时间数组
  7. int[] f = new int[number]; //结束时间数组
  8. System.out.println("请分别输入"+number+"个活动的开始时间:");
  9. Scanner in_s = new Scanner(System.in);//循环输入开始时间数组
  10. for(int i=0;i<number;i++){
  11. s[i]=in_s.nextInt();}
  12. System.out.println("请分别输入"+number+"个活动的结束时间:");
  13. Scanner in_f = new Scanner(System.in);//循环输入结束时间数组
  14. for(int i=0;i<number;i++){
  15. f[i]=in_f.nextInt();}
  16. System.out.println("开始时间数组s[10]:");
  17. for(int i=0;i<number;i++){ //输出两个数组
  18. System.out.print("["+s[i]+"]"); }
  19. System.out.println("\n结束时间数组f[10]:");
  20. for(int i=0;i<number;i++){
  21. System.out.print("["+f[i]+"]"); }
  22. boolean[] a=new boolean[s.length]; //一个与活动数目等长的 boolean型数组记录每个活动的状态
  23. shiyan3 ac = new shiyan3();
  24. int counts=ac.Activity_arrangement(s, f, a);
  25. System.out.println("\n活动集合中最大相容活动数量为:"+counts);
  26. for(int i=1;i<=s.length-1;i++){
  27. if(a[i]){
  28. System.out.println("第"+i+"活动被选中,其开始时间为:"+s[i-1]+",结束时间为:"+f[i-1]); } } }
  29. public int Activity_arrangement(int[] s,int[] f,boolean[] a){
  30. int n=s.length-1;
  31. a[1]=true; //第一个活动被选中
  32. int j=1;
  33. int count=1; //被选中活动的数量,默认第一个活动被选中
  34. for(int i=2;i<=n;i++){
  35. if(s[i]>=f[j]){ //下一个活动开始时间大于大于等于上一个活动结束时间
  36. a[i]=true;
  37. j=i;
  38. count++; }
  39. else{
  40. a[i]=false;
  41. }
  42. }
  43. return count;

运行结果如下:

贪心算法求解活动安排<算法分析>的更多相关文章

  1. [C++] 贪心算法之活动安排、背包问题

    一.贪心算法的基本思想 在求解过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解. 从贪心算法的定义可以看出,贪心算法不是从整体上考 ...

  2. C++贪心算法实现活动安排问题

    问题描述: 设有n个活动的集合E={1,2,…,n},其中,每个活动都要求使用同一资源,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且s ...

  3. 51nod贪心算法入门-----活动安排问题

    有若干个活动,第i个开始时间和结束时间是[Si,fi),只有一个教室,活动之间不能交叠,求最多安排多少个活动? 输入 第1行:1个数N,线段的数量(2 <= N <= 10000) 第2 ...

  4. 51nod贪心算法入门-----活动安排问题2

    题目大意就是给几个活动,问要几个教室能够弄完. 这个题目的想法就是把活动的开始——结束的时间看做是数轴上的一段线段,教室的个数就是在某点的时间厚度,求最大的时间厚度就是所需要的教室个数. #inclu ...

  5. 基于贪心算法求解TSP问题(JAVA)

    概述 前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 详细 代码下载:http://www.de ...

  6. 雷达覆盖,贪心,类似活动安排(POJ1328)

    题目链接:http://poj.org/problem?id=1328 解题报告: 1.按照头结点排序. #include <cstdio> #include <cmath> ...

  7. 用贪心算法近似求解 Loading Balance 问题(作业调度的负载均衡)

    一,Loading Balance 问题描述:有 m 台相同的机器及 n 个作业,其中 m={M(1),M(2),……M(m)}.n = {J(1),J(2),……J(n)}.每个作业都有一个处理时间 ...

  8. 贪心算法和动态规划[zz]

    http://www.cnblogs.com/asuran/archive/2010/01/26/1656399.html 贪心算法 1.贪心选择性质 所谓贪心选择性质是指所求问题的整体最优解可以通过 ...

  9. 『嗨威说』算法设计与分析 - 贪心算法思想小结(HDU 2088 Box of Bricks)

    本文索引目录: 一.贪心算法的基本思想以及个人理解 二.汽车加油问题的贪心选择性质 三.一道贪心算法题点拨升华贪心思想 四.结对编程情况 一.贪心算法的基本思想以及个人理解: 1.1 基本概念: 首先 ...

随机推荐

  1. 转 PHP编程过程中需要了解的this,self,parent的区别

    {一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object Oriented Programming)现已经成为编程人员的一项基本技能.利用OOP的思想进行 ...

  2. Plugging an Unplugged Pluggable Database issue 3

    Multitenant Unplug/Plug Best Practices (文档 ID 1935365.1) 1.source 从0419 升级到1019 ,但是datapatch 没有回退041 ...

  3. 树莓派 VNC 远程桌面 同一个桌面

    如何在ssh登录的情况下配置好vino 1.传输文件 2.ssh sudo dpkg -i ~/swap/deb/tight* sudo cp ~/swap/vino.desktop /etc/xdg ...

  4. ADO.net数据访问

    需要引用对应命名空间:System.Data.SqlClient; SqlConnection:连接对象SqlCommand:命令对象SqlDataReader:读取器对象 //造连接字符串 stri ...

  5. 关于springMVC传参问题

    今天写项目,碰到一个以前灭有注意到的问题,一般情况下使用springMVC @Controller注解之后,被此注解标记的方法的参数名只需要跟页面表单的标签的name的值相同即可拿到页面的值,但是如果 ...

  6. AJPFX关于Java NIO的概述总结

    Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Sel ...

  7. JDK11源码分析之集合类(一)----HashMap

    一,首先需要拉取JDK11源码: 方便起见我给出芋道源码作者已经拉取好的openJDK11的GitHub地址只需要fork一下克隆到本地导入IDEA中就可以对源码分析了: https://github ...

  8. Hadoop YARN学习之监控集群监控Nagios(4)

    doop YARN学习之监控集群监控Nagios(4) 1. Nagios是一个流行的开源监控工具,可以用来监控Hadoop集群. 2. 监控基本的Hadoop服务 调试好脚本后命名为chek_res ...

  9. Katalon Studio(二) 进阶战の Jenkins集成 analytics.katalon 集成

    本教程只针对Katalon Studio 与CI工具之一Jenkins的集成与脚本集的测试报告可视化简单操作. 1.新建一个job 2.新建一个自由风格的job 3.构建触发器 4.构建Windows ...

  10. Node.js——路径问题

    相对路径问题:读取文件,形如 ./ 或者 ../  一般认为这个点是相对于这个 js 文件的文件夹路径,实际上不是,这个点相对于node命令时的当前路径,不同 js 文件下进行 ./  这样的引入是不 ...