• 201709-2 公共钥匙盒 Java


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

    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] + " ");
    		}
    	}
    }
    
    
  • 相关阅读:
    顺时针打印二维矩阵
    hbase的rowKey设计原则
    关于这段时间学习 EntityFramework的 一点感悟
    一次排序序号的补充
    我的第一段jQuery代码
    非常郁闷的 .NET中程序集的动态加载
    关于EF6的记录Sql语句 与 EntityFramework.Extend 的诟病
    排序更改
    ZhyjEye 简介
    js数组去重的4个方法
  • 原文地址:https://www.cnblogs.com/yu-jiawei/p/12370694.html
Copyright © 2020-2023  润新知