import java.util.ArrayList;

import java.util.Scanner;

/*

* 1.利用集合存入教师数据,初始化钥匙序列N, K:教师人数 时间记录器:time, 集合存储要归还的钥匙

* 2.还钥匙:根据当前时间判断归还钥匙的老师,将钥匙序号存入集合,排序,再依次放回数组中

* 3.取钥匙:根据当前时间,判断能使用钥匙的老师,执行取钥匙方法

* 教师: w:钥匙号 s:开始上课 c:上课时间 e:s+c 结束时间

*/

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

//存老师

ArrayList arrt1 = new ArrayList();

//存要归还的钥匙

ArrayList key = new ArrayList();

int time = 1;

int N = sc.nextInt();

int K = sc.nextInt();

int[] arr = new int[N];

for (int i = 0; i < arr.length; i++) {

arr[i] = i + 1;

}

for (int i = 1; i <= K; i++) {

Teacher t = new Teacher(sc.nextInt(), sc.nextInt(), sc.nextInt());

arrt1.add(t);

}

//结束条件是当前时间大于最后一个老师上完课的时间

while(time <= maxTime(arrt1)){

returnKey(time, arrt1, arr, key);

borrowKey(time, arrt1, arr);

time++;

}

for (int i = 0; i < arr.length; i++) {

System.out.print(arr[i]+" ");

}

}

public static void returnKey(int time, ArrayList arrt1, int[] arr, ArrayList key) {

//清空放置要归还钥匙的集合

key.clear();

//判断这个时间是否有需要归还钥匙的老师

for (int i = 0; i < arrt1.size(); i++) {

if (arrt1.get(i).e == time) {

key.add(arrt1.get(i).w);

}

}

if (key.isEmpty()) {

//没有钥匙则不归还

return;

} else {

//将要归还的钥匙从大到小排序

for (int i = 0; i < key.size() - 1; i++) {

for (int j = 0; j < key.size() - 1 - i; j++) {

if (key.get(j) > key.get(j + 1)) {

int temp = key.get(j);

key.set(j, key.get(j + 1));

key.set(j + 1, temp);

}

}

}

//归还钥匙

for (int i = 0, j = 0; i < arr.length; i++) {

if(arr[i] == 0){

arr[i] = key.get(j);

if(key.size()-1 == j){

break;

}else{

j++;

}

}

}

}

}

public static void borrowKey(int time, ArrayList arrt1, int[] arr){

for (int i = 0; i < arrt1.size(); i++) {

//判断在当前时间能够使用钥匙的老师

if(time == arrt1.get(i).s){

//取走钥匙

for (int j = 0; j < arr.length; j++) {

if(arrt1.get(i).w == arr[j]){

arr[j] = 0;

break;

}

}

}

}

}

public static int maxTime(ArrayList arrt1){

int temp = 0;

for (int i = 0; i < arrt1.size(); i++) {

if(arrt1.get(i).e > temp){

temp = arrt1.get(i).e;

}

}

return temp;

}

}

class Teacher {

int w;

int s;

int c;

int e;

public Teacher(int w, int s, int c) {

this.w = w;

this.s = s;

this.c = c;

this.e = this.s + this.c;

}

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

java编写的公共钥匙盒_公共钥匙盒.java相关推荐

  1. java编写大数据分析模型_如何用Java(DOM分析器)编写XML文件

    java编写大数据分析模型 Earlier we learned how to read XML file and how to edit XML file in java using DOM Par ...

  2. 用java编写的爱情红心_如何用java实现每天给对象发情话

    一.引言 最近看到一篇用js代码实现表白的文章,深有感触. 然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞 实现思路: 使用HttpClient远程获取彩虹屁 ...

  3. 用java编写战舰 游戏吗_如何在Java中正确建模战舰游戏

    我正在尝试为我的小组在大学里做的"游戏"项目创建战舰游戏.我之前从未真正使用过GUI,几乎所有输出都在Eclipse控制台中. 首先,我创建了一个GUI类,它实际上是我的" ...

  4. 应用java编写 按键小脚本_一个使用JAVA编写的类似按键精灵的程序

    import java.io.*; import java.util.*; import java.awt.*; import java.awt.event.*; /** * 支持脚本文件的按键控制程 ...

  5. java编写一个汽车出租管理程序_怎么用java做汽车出租管理程序

    展开全部 车辆出租管理系统 一.项目功能:设计程序,可以管理各种出租汽车e69da5e887aa62616964757a686964616f31333332623331并计算其租金.说明:程序主要管理 ...

  6. java反射获取方法内部_公共技术点之 Java 反射 Reflection

    本文为 Android 开源项目源码解析 公共技术点中的 Java 反射 部分 分析者:Mr.Simple,校对者:Trinea,校对状态:未完成 1. 了解 Java 中的反射 1.1 什么是 Ja ...

  7. java编写代码用什么_如何学习用Java编写代码:为什么要学习以及从哪里开始

    java编写代码用什么 by John Selawsky 约翰·塞劳斯基(John Selawsky) 如何学习用Java编写代码:为什么要学习以及从哪里开始 (How to learn to cod ...

  8. java编写排序的代码_在Java 8之前,您编写了几行代码来对对象集合进行排序?...

    java编写排序的代码 在Java 8之前,您编写了几行代码来对对象集合进行排序? Java 8您需要多少个? 您可以在Java 8中用一行完成. 让我们看看下面的Employee类. public ...

  9. 用java编写一个图书管理系统_手把手教你编写第一个java程序

    安装完jdk后我们就可以试着编写第一个java程序了,让我们一起来试试吧! 第一步 点击开始--所有程序--附件--记事本,新建记事本,输入以下代码: class HelloWorld { publi ...

  10. java编写计算类加减乘除_老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java...

    导航:网站首页 > 老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java 时间:2019-4-10 老师要求张浩使用面向对象的思想编 ...

最新文章

  1. asp.net mvc 学习
  2. qrcode生产带logo_“白板”口罩打上LOGO装名牌 警方重拳出击清市场
  3. 样本量极少如何机器学习?最新Few-Shot Learning综述
  4. 微信开发直接访问本地调试
  5. inline hook学习
  6. java地图瓦片_百度地图瓦片层级范围对照表
  7. js构造函数内存在的闭包
  8. WPF自定义控件的三种方式
  9. java 同步 异步 阻塞 非阻塞_Java日志正确使用姿势,大白话搞懂什么是同步/异步/阻塞/非阻塞...
  10. 分布式搜索引擎ElasticSearch(四) -- 插件使用
  11. vue 插槽的版本变化1.x-2.6.0-3.x(详细)
  12. Visio2013 64位下载安装以及破解激活教程
  13. 移动硬盘弹出文件或目录损坏且无法读取解决办法
  14. 树莓派 配置中文环境
  15. 个人网站设计需求分析
  16. vue3关闭语法错误提示
  17. gavin中文是什么意思_Gavin[加文,盖温]英文名的中文翻译意思、发音、来源及流行趋势-千代英文名...
  18. K8S的apiVersion版本详解
  19. 我欲封神——JAVA封神之路
  20. 卡片游戏--循环队列实现

热门文章

  1. mne进行ica分析
  2. java integer转成负数_Java 十进制和十六制之间的转化(负数的处理)
  3. android手机是否root,已经2017年了,安卓手机还需要Root吗?
  4. 10000,感谢有你
  5. php tp gii,TP电商项目:使用GII制作品牌管理
  6. 新买的硬盘接在计算机上,电脑如何对刚买来的新硬盘分区
  7. Word目录排版,页码格式转换
  8. 以太坊+IPFS+WEB 电商平台开发讲解
  9. gorm中使用where in 条件
  10. 三阶魔方没有。四阶魔方 有的公式