zoukankan      html  css  js  c++  java
  • 大家都很忙 java版解答.. 欢迎各种拍砖,求交流

    具体题目关注我的微博主页 啦啦啦,求关注.

    http://weibo.com/2625628052/profile?topnav=1&wvr=5#1347092750648

    里面有我转发的李开复的问题..

    错了.........

    2个人同时关注3个项目的时候出现了一次等待..

    顺便求关注:

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    
    public class Main {
        public static List<Project> allProjects = new ArrayList<Project>();
        public static List<Student> allStudents = new ArrayList<Student>();
        public static HashMap<String, Project> allProHash = new HashMap<String, Project>();
        public static HashMap<String, Student> allStuHash = new HashMap<String, Student>();
    
        public static void main(String[] args) {
            File input = new File("/home/jushang/iw.in");//测试文件. 随便写...
            FileInputStream fis;
            try {
                fis = new FileInputStream(input);
                InputStreamReader reader = new InputStreamReader(fis);
                BufferedReader reader2 = new BufferedReader(reader);
                String line = reader2.readLine(); 
                while (line != null && line.length() > 0) {  //读取所有数据,顺便创建实例
                    String[] values = line.split(" ");
                    if (values.length != 2) {
                        System.out.println(line);
                        System.out.println("read Date Error!!");
                        break;
                    }
                    Project p;
                    Student s;
                    if (!allProHash.containsKey(values[1])) {
                        p = new Project(values[1]);
                        allProHash.put(values[1], p);
                        allProjects.add(p);
                    } else {
                        p = allProHash.get(values[1]);
                    }
                    if (allStuHash.containsKey(values[0])) {
                        s = allStuHash.get(values[0]);
                    } else {
                        s = new Student(values[0]);
                        allStuHash.put(values[0], s);
                        allStudents.add(s);
                    }
                    s.addProject(p);
                    p.addStudent(s);
    
                    line = reader2.readLine();
                }
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
            boolean isContinue = true;
            while (isContinue) {  //开始按周优先级排序.
                sort();
                for (Student s : allStudents) {
                    s.tick();
                }
                isContinue = false;
                for (Project p : allProjects) {
                    p.tick();
                    if (p.isStartMianshi() && p.mianshi()) { //已经开始面试的人优先挑选面试者
                        isContinue = true;
                        continue;
                    }
    
                }
                for (Project p : allProjects) {
                    if (!p.isStartMianshi() && p.mianshi()) {
                        isContinue = true;
                    }
                }
            }
            sortByName();
            for (Project p : allProjects) {
                p.printResult(); //打印结果
            }
    
        }
    
        public static void sort() { //根据还没有面试人的多少排序,少的排在前面.
    
            java.util.Collections.sort(allProjects, new Comparator<Project>() {
                @Override
                public int compare(Project object1, Project object2) {
                    // TODO Auto-generated method stub
                    if (object1.getUnInterNumber() > object2.getUnInterNumber()) {
                        return 1;
                    } else if (object1.getUnInterNumber() < object2.getUnInterNumber()) {
                        return -1;
                    }
                    return 0;
                }
            });
    
        }
    
        public static void sortByName() {
    
            java.util.Collections.sort(allProjects, new Comparator<Project>() {
                @Override
                public int compare(Project object1, Project object2) {
                    // TODO Auto-generated method stub
                    if (Integer.valueOf(object1.getName()) > Integer.valueOf(object2.getName())) {
                        return 1;
                    } else if (Integer.valueOf(object1.getName()) < Integer.valueOf(object2.getName())) {
                        return -1;
                    }
                    return 0;
                }
            });
    
        }
    
    }

    学生类:

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    
    public class Student {
        private List<Project> proList = new ArrayList<Project>();
        private HashMap<Project, String> proHash = new HashMap<Project, String>();
        private List<Project> needInterViewproList = new ArrayList<Project>();
        private String name;
        private int Time = 0;
        private boolean isStartMianshi = false;
        private boolean lock = false;
        private int freeTick = 0;
    
        public List<Project> interViewProList = new ArrayList<Project>();
    
        public Student(String name) {
            this.name = name;
        }
    
        public boolean addProject(Project p) {
            if (!proHash.containsKey(p)) {
                proList.add(p);
                needInterViewproList.add(p);
                proHash.put(p, p.getName());
                return true;
            }
            return false;
        }
    
        public boolean mianshi(Project p) {
    
            if (proHash.containsKey(p)) {
                lock = true;
                freeTick--;
                needInterViewproList.remove(p);
                interViewProList.add(p);
    
                if (!isStartMianshi) {
                    Time = 1;
                    isStartMianshi = true;
                }
    
                if (needInterViewproList.size() == 0) {
                    isStartMianshi = false;
                }
    
                return true;
            }
            return false;
        }
    
        public void tick() {
            lock = false;
            if (isStartMianshi) {
                freeTick++;
                Time++;
            }
        }
    
        public boolean isLock() {
            return lock;
        }
    
        public String getName() {
            return name;
        }
    
        public boolean isStartMianshi() {
            return isStartMianshi;
        }
        
        public int getUnviewNumber(){
            
            return needInterViewproList.size();
        }
        
        
    }
    

    项目的类:

    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    
    public class Project {
        private List<Student> StudentList = new ArrayList<Student>();
        private HashMap<Student, String> StudentHash = new HashMap<Student, String>();
        private List<Student> interedStrudent = new ArrayList<Student>();
        private String name;
        private int Time = 0;
        private boolean isStartMianshi = false;
        private String result = "";
    
        public Project(String name) {
            this.name = name;
        }
    
        public boolean addStudent(Student s) {
            if (!StudentHash.containsKey(s)) {
                StudentHash.put(s, s.getName());
                StudentList.add(s);
            }
    
            return false;
        }
    
        public boolean mianshi() {
            sort();
            String a = "0 ";
            for (Student s : StudentList) {
    
                if (s.isStartMianshi() && !s.isLock()) {
                    if (!s.mianshi(this)) {
                        System.out.print("error!!!!!!!!" + s.getName());
                    } else {
                        StudentList.remove(s);
                        interedStrudent.add(s);
                        a = s.getName();
                        result += a+" ";
                        if (!isStartMianshi) {
                            isStartMianshi = true;
                            Time = 1;
                        }
                        if (StudentList.size() == 0) {
                            isStartMianshi = false;
                        }
                        return true;
                    }
                }
           
            }
            
            for(Student s:StudentList){
                if (!s.isLock()) {
                    if (!s.mianshi(this)) {
    
                        System.out.print("error!!!!!!!!" + s.getName());
                    } else {
                        StudentList.remove(s);
                        interedStrudent.add(s);
                        a = s.getName();
                        result += a +" ";
                        if (!isStartMianshi) {
                            isStartMianshi = true;
                            Time = 1;
                        }
    
                        if (StudentList.size() == 0) {
                            isStartMianshi = false;
                        }
    
                        return true;
                    }
                }
            }
            result += a;
            if (StudentList.size() == 0) {
                return false;
            } else {
                return true;
            }
    
        }
    
        public void tick() {
            if (isStartMianshi) {
                Time++;
            }
        }
    
        public String getName() {
            return name;
        }
    
        public int getUnInterNumber() {
            return StudentList.size();
        }
    
        private void sort() {
            java.util.Collections.sort(StudentList, new Comparator<Student>() {
                @Override
                public int compare(Student object1, Student object2) {
                    // TODO Auto-generated method stub
                    if (object1.getUnviewNumber() > object2.getUnviewNumber()) {
                        return -1;
                    } else if (object1.getUnviewNumber() < object2.getUnviewNumber()) {
                        return 1;
                    }
                    return 0;
                }
            });
        }
    
        public boolean isStartMianshi(){
            return isStartMianshi;
        }
        
        
        public void printResult() {
    //        String s = "";
    //        for (Student name : interedStrudent) {
    //            s += name.getName() + " ";
    //        }
    //        s += "\n";
            System.out.println(name+":   "+result);
        }
    
    }
    

      

    创新工厂竟然要同时发简历过去..., 就贴在这里,顺便求讨论,求正确答案..

  • 相关阅读:
    windows窗口消息内部处理机制
    iPhone and iPad Development GUI Kits, Stencils and Icons
    【转】windbg 调试经典文章(常用)
    atl和mfc
    开发IDA pro图形界面插件
    ida常用插件
    为Visual studio 2008 添加汇编工程模板
    常用软件汇总
    BOOL EnumInternetExplorer( ProcessWebBrowser pHander )
    同年龄的牛人博客
  • 原文地址:https://www.cnblogs.com/zhenbeiju/p/2676772.html
Copyright © 2011-2022 走看看