码迷,mamicode.com
首页 > 其他好文 > 详细

最大访客

时间:2014-10-06 19:23:20      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   java   for   sp   div   

理论:

现将举行一个餐会,让访客事先填写到达时间与离开时间,為了掌握座位的数目,必须先估计不同时间的最大访客数。

解法:

这个题目看似有些复杂,其实相当简单,单就计算访客数这个目的,同时考虑同一访客的来访时间与离开时间,反而会使程式变得复杂;只要将来访时间与离开时间分开处理就可以了,假设访客 i 的来访时间為x[i],而离开时间為y[i]。

在资料输入完毕之后,将x[i]与y[i]分别进行排序(由小到大),道理很简单,只要先计算某时之前总共来访了多少访客,然后再减去某时之前的离开访客,就可以轻易的解出这个问题。

 

 

package 经典;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;

public class MaxVisit {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        
        System.out.println("输入来访时间与离开时间(0~24):");
        System.out.println("范例:10 15"); 
        System.out.println("输入-1结束");

        BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
        
        ArrayList list=new ArrayList();
        
        while(true)
        {
            System.out.println(">>");
            String input=buf.readLine();
            
            if(input.equals("-1"))
                break;
            else
                list.add(input);
        }
        
        int[] x=new int[list.size()];
        int[] y=new int[list.size()];
        
        for(int i=0; i<list.size(); i++)
        {
            String input=(String)list.get(i);
            String[] str=input.split(" ");
            x[i]=Integer.parseInt(str[0]);
            y[i]=Integer.parseInt(str[1]);
        }
        
        Arrays.sort(x);
        Arrays.sort(y);
        
        for(int time = 0; time < 25; time++)
        { 
            System.out.println(time + " 时的最大访客数:" 
                    + MaxVisit.maxGuest(x, y, time)); 
        } 
    }

    private static int maxGuest(int[] x, int[] y, int time) {
        int num = 0; 

        for(int i = 0; i < x.length; i++) { 
            if(time > x[i]) 
                num++; 
            if(time > y[i]) 
                num--; 
        } 

        return num; 
    }

}

 

最大访客

标签:style   blog   color   io   ar   java   for   sp   div   

原文地址:http://www.cnblogs.com/huangcongcong/p/4008452.html

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