散列原理 设计方案


题:
某停车场容量为1000,编号从1000~1999 且相邻编号位置肯定是相邻的。最高峰大约需要停放800辆车。
假设车牌号码是类似:“京NHK936” 这样的汉字、数字、字母混合。
我们需要一种方案,可以从车牌号快速地计算出该车辆的大约停车位置。这样当有人电话询问某辆车的位置时,只要报一下车牌号就可以了。

源码CarParking.java


import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
import java.util.Iterator;

public class CarParking {
    public static void main(String[] args) {
        String s = "京津冀晋蒙辽吉黑泸苏浙皖闽赣鲁豫鄂湘粤桂琼渝川黔云藏陕甘青宁新";
        Set<String> cn = new HashSet<String>();
        Random rd = new Random();
        while (cn.size()<1000) {
            String c1=(char)(65+rd.nextInt(25))+"";
            String c2=(char)(65+rd.nextInt(25))+"";
            String c3=(char)(65+rd.nextInt(25))+"";
            cn.add(s.charAt(rd.nextInt(31))+c1+c2+c3+
                rd.nextInt(9)+rd.nextInt(9)+rd.nextInt(9));
        }
        Map<String, Integer> m= new HashMap<String, Integer>();
        Iterator<String> ite = cn.iterator();
        int i = 1000;
        while (ite.hasNext()) {
            m.put(ite.next(), i);
            i++;
        }
        System.out.println(cn);
        System.out.println("Please enter a car No.");
        Scanner sc = new Scanner(System.in);
        String n = sc.next();
        System.out.println("Your car's location: "+m.get(n));
        sc.close();
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注