码迷,mamicode.com
首页 > 编程语言 > 详细

201709-2 公共钥匙盒 Java

时间:2020-02-27 10:27:24      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:class   temp   tin   add   sys   int   java   import   string   

技术图片

思路:
按上课开始时间排一下序,一个时刻一个时刻判断要不要还钥匙,要不要借钥匙

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();//N把钥匙
        int K = sc.nextInt();//K次操作
        int key[] = new int[N];
        for(int i=0;i<N;i++) {//给钥匙编号
            key[i] = i+1;
        }
        
        //存储上课信息
        int mes[][] = new int[K][3];
        
        //找出最晚结束的课
        int max = 0;
        for(int i=0;i<K;i++) {
            mes[i][0] = sc.nextInt();//钥匙编号
            mes[i][1] = sc.nextInt();//上课开始
            mes[i][2] = sc.nextInt() + mes[i][1];//下课结束时刻
            if(mes[i][2] > max) {
                max = mes[i][2];
            }
        }
        //按上课开始时间排序,选择排序
        for(int i=0;i<K;i++) {
            int min = i;
            for(int j=i+1;j<K;j++) {
                if(mes[j][1] < mes[i][1]) {
                    min = j;
                }
            }
            if(min != i) {//把最小的放到排好序的最后
                int temp[] = mes[min];
                mes[min] = mes[i];
                mes[i] = temp;
            }
        }
        
        //拿钥匙,到最后一节课结束
        for(int i=1;i<=max;i++) {
            //每一时刻应还钥匙的集合
            List<Integer> back = new ArrayList<Integer>();
            for(int j=0;j<K;j++) {
                if(mes[j][2] == i) {
                    back.add(mes[j][0]);
                }
            }
            Collections.sort(back);//钥匙从小到大排序
            //先全部还完钥匙
            for(int j=0;j<back.size();j++) {
                for(int k=0;k<N;k++) {
                    if(key[k] == 0) {
                        key[k] = back.get(j);
                        break;
                    }
                }
            }
            
            //借钥匙
            for(int j=0;j<K;j++) {
                if(mes[j][1] == i) {
                    for(int k=0;k<N;k++) {
                        if(key[k] == mes[j][0]) {
                            key[k] = 0;
                        }
                    }
                }
            }
        }
        
        sc.close();
        //打印
        for(int i=0;i<N;i++) {
            System.out.print(key[i] + " ");
        }
    }
}

201709-2 公共钥匙盒 Java

标签:class   temp   tin   add   sys   int   java   import   string   

原文地址:https://www.cnblogs.com/yu-jiawei/p/12370694.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!