package com.demo2;
/** “今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%...”确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。
作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,
比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,
假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)*/import java.util.Scanner;/** 输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,* 然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,* 为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。*/
public class HDU_oj2037 {public static void main(String[] args) {Scanner sn = new Scanner(System.in);while (sn.hasNext()) {int n = sn.nextInt();if (n == 0)break;Pro[] arr = new Pro[n]; //[null, null, null] for (int i = 0; i < n; i++) {arr[i] = new Pro();  //[obj1, obj2, obj3],对象数组的操作arr[i].setStart(sn.nextInt()); // 开始时间arr[i].setEnd(sn.nextInt()); // 结束时间}// 按照结束时间将arr[]排序for (int i = 0; i < n - 1; i++) {for (int j = i + 1; j < n; j++) {if (arr[i].getEnd() > arr[j].getEnd()) {swap(arr,i,j);}}}//           for (int i = 0; i < n; i++) {
//              System.out.print(arr[i].getEnd() + " ,");
//          }int time = arr[0].getEnd(); // 记录目前已经播放的时间int count = 1; // 记录可以播放的完整节目数(已经可以播放第一个节目for (int i = 1; i < n; i++) {if (time <= arr[i].getStart()) {time = arr[i].getEnd();count++;}}System.out.println(count);}sn.close();}public static void swap(Pro[] arr,int aa,int bb) {Pro temp = arr[aa];arr[aa] = arr[bb];arr[bb] = temp;}}class Pro {private int start;private int end;public int getStart() {return start;}public void setStart(int start) {this.start = start;}public int getEnd() {return end;}public void setEnd(int end) {this.end = end;}
}

本题运用贪心算法,将结束时间先排好序。

编码过程中出现了几个小bug:

1、引用对象数组刚刚创建时只是创建了一个空间,并没有创建这些对象,所以赋值时需要进行再次new对象

2、swap交换,引用类型和数组这种存在堆空间的才可以真正的操作其本身,单纯一个变量不会发生变化,这种问题面试题里面也会常考,要注意

3、记得time那里的<=,千万不能不写等于号,会少看好几个节目

杭电oj —— 2037(贪心算法)相关推荐

  1. 【ACM】杭电OJ 2037

    题目链接:杭电OJ 2037 先把b[i]进行排序,然后,b[i]与a[i+1]进行比较. #include <iostream> #include <cstdio> #inc ...

  2. 杭电oj2037c语言,杭电oj 2037 今年暑假不AC

    Tips:贪心算法的典型应用,可以按照节目结束时间由小到大排序,(至于结束时间相同的,有些人说按开始时间早的排序,不过个人认为不必处理,因为结束时间一样,两个之中要么都没有,要么必有一个)然后再依次进 ...

  3. 杭电OJ第11页2035~2039算法题(C语言)

    目录 2035.人见人爱A^B 2036.改革春风吹满地 2037.今年暑假不AC 2038.Message 2039.三角形 2035.人见人爱A^B Problem Description 求A^ ...

  4. 杭电OJ第11页2075~2079算法题(C语言)

    目录 2075.A|B? 2076.夹角有多大 2077.汉诺塔IV 2078.复习时间 2079.选课时间 2075.A|B? Problem Description 正整数A是否能被正整数B整除, ...

  5. 杭电OJ第11页2085~2089算法题(C语言)

    目录 2085.核反应堆 2086.A1 = ? 2087.剪花布条 2088.Box of Bricks 2089.不要62 2085.核反应堆 Problem Description 某核反应堆有 ...

  6. 杭电OJ第11页2065~2069算法题(C语言)

    目录 2065."红色病毒"问题 2066.一个人的旅行 2067.小兔的棋盘 2068.RPG的错排 2069.Coin Change 2065."红色病毒" ...

  7. 杭电OJ——ACM 1009.FatMouse‘ Trade

    FatMouse'Trade 杭电OJ--ACM 1009.FatMouse' Trade链接入口 问题描述        肥老鼠换东西,m磅猫食,n间房子,每个房间有J[i]磅JavaBean,对应 ...

  8. 【ACM】杭电OJ 2012。

    题目链接:杭电OJ 2012 思路很简单,但是有一种高效算法显示编译错误,不知道为什么 运行环境:VS2017 AC代码: #include <stdio.h> #include < ...

  9. c++ substr截取中间部分字符串_杭电OJ 字符串处理类部分题解

    一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...

最新文章

  1. java 的回调函数
  2. 《预训练周刊》第40期: 量子预训练、千层BERT与GPT
  3. Redis可视化工具 Redis Desktop Manager
  4. Oracle-PL/SQL基础
  5. Linux centos7 VMware Apache访问日志不记录静态文件、访问日志切割、静态元素过期时间...
  6. 使用Jexus 容器化您的 Blazor 应用程序
  7. C#常用类 改配置文件
  8. 0基础java语法_Java零基础教程(二)基础语法
  9. 计算机考证包括cad吗
  10. 网络调试助手简单使用教程(CM精装版V3.8.2)
  11. w10计算机右键管理,电脑右键新建菜单管理,win10右键新建菜单管理-
  12. 【每日新闻】微软日本试行做四天休三天新制度 还发6000元补贴
  13. 她们不止“都挺好”自带”苏明玉“光环的美联人
  14. 女生学大数据好还是计算机好?都适合女生吗?就业前景好吗?
  15. True Liars (并查集压缩路径 + DP)
  16. (2017中国数字化贡献人物专访)相宜本草:数字化生态转型实现IT部门角色跃迁...
  17. Ubuntu系统下打开chm文件
  18. 基于3D关节点的人体动作识别综述(转)
  19. twrp显示 failed to mount system
  20. Xilinx PCIe下行调试

热门文章

  1. 解释瑞利分布的平方、莱斯分布的平方、高斯分布的平方 服从什么分布?
  2. WEB之静态网页(模仿昆工主页)
  3. iOS NSURLSession使用详解
  4. 数据库:让杂乱无章的数据充满价值
  5. 双向RNN:bidirectional_dynamic_rnn()函数
  6. 于娟临终前的忠告(二)
  7. 刘一男词汇课(从aboard到establish):“宝剑锋从磨砺出,梅花香自苦寒来。“
  8. 如何将Nintendo Switch Joy-Con或Pro控制器连接到PC
  9. RocketMQ作业
  10. Python番外(3)——P72性能分析