当前位置: 代码迷 >> J2SE >> 求一个优秀算法,参加有分
  详细解决方案

求一个优秀算法,参加有分

热度:280   发布时间:2016-04-24 18:02:42.0
求一个优秀算法,参与有分.
基本需求如下:
1.有四个人(甲乙丙丁)轮流做事情,按甲乙丙丁顺序,每人各有10件事情要做,但每人每次只允许做一件,并且从第一件开始做.

2.等到丁做完一件事后,休息1分钟,然后又从甲开始做剩下的事情,以此循环,直到四人都做完自己的所有事情.

以上为基本要求,附加扩展需求如下:
1.如果一件事做失败了,则记录它的做事者,以及失败原因,失败时间等,再输入到c:/note.txt,然后再跳过该件事,其它人继续进行.

2.当四人完成所有事情后,记录每人完成事情的所需的总时间以及成功率(或失败率),最好能用图表显示统计.

我想方法可能不少,但效率可能有别,此算法看似简单,但要运用的知识点却不少,线程,异常处理,循环应用,文件操作等等,
对一般人练练手应该还是有意义的啦.

大家有兴趣也来露两手如何?附加要求可以不考虑.本人的就不贴上去献丑了,呵

最后说下,本人认为该需求用于面试也不错,如果有人能在30分钟内完成,水平应该是相当不错的(使用时间越少,正确率越高,相对来说被面试者水平越高)
当然如果你认为是这是作业题或太简单了而不屑一顾的话,那你可以绕路了(此处已难以展现你才能了,人各有志吧,水平不同当然目标不同了,可以理解的,呵.)


------解决方案--------------------
有四个人(甲乙丙丁)轮流做事情,

这就不用线程了吧?


------解决方案--------------------
我完全不觉得这个跟线程有什么关系。。
------解决方案--------------------
4个人。。
同意楼上用线程!!
------解决方案--------------------
这样可不可以
Java code
public class FTest{    public static void main(String[] args) {        Logger log=new Logger();        People a=new People("甲", log);        People b=new People("乙", log);        People c=new People("丙", log);        People d=new People("丁", log);        for(int i=0;i<10;i++){            a.doMatter();            System.out.println("----pause-----1min----");            b.doMatter();            System.out.println("----pause-----1min----");            c.doMatter();            System.out.println("----pause-----1min----");            d.doMatter();            System.out.println("----pause-----1min----");        }        log.addTime(-1);        System.out.println(log);    }}class People{    private String name;    private int count;    private Logger log;    public People(String name,Logger log){        this.name=name;        this.log=log;    }    public void doMatter(){        System.out.println(name+"doing No."+(count+1));        int cost=(int)(Math.random()*5+1);        System.out.println("takes "+cost+" mins");        log.addTime(cost);        if(Math.random()>0.7){            log.addError();            System.out.println("fail!!");        }else{            System.out.println("success!!!");        }        log.addTime(1);        count++;    }}class Logger{    private int time;    private int error;    public void addTime(int time){        this.time+=time;    }    public void addError(){        error++;    }    public String toString() {        return "times:"+time+","+"errors:"+error;    }    }
------解决方案--------------------
哇,靠,那么强
------解决方案--------------------
关注中,顶楼主!
------解决方案--------------------
帮顶,学习.
------解决方案--------------------
设四个变量分别表示四个人完成的情况,然后再用wait(),notify(),应该可以啊
------解决方案--------------------
汗~  关注中  帮顶 接分、、
------解决方案--------------------
学习中!
------解决方案--------------------
进来瞧瞧
------解决方案--------------------

------解决方案--------------------
这种些些小问题,楼主不是有些夸大吧?什么应聘之类的都扯上了,我虽然还没有毕业(不过都大四了),但是我看了下,找工作也不是那么容易的嘛!你这个问题其实没那么复杂,就是几个简单的语句在那里重用几下就行了,思路很简单的!我模拟了一个事件,假如是随机比较大小这样一件事!
  相关解决方案