拿到最后一个球赢

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/linkingfei/article/details/82259997

/**
     * 拿球问题:拿到最后一个球赢
     *      设:A、B每次最多拿1-5个,只要最后剩6个
     *  
     *  A赢:
     *      1、A先拿
     *          num%6=m
     *          A先拿m个、以后每次A与B总的拿6个
     *          
     *      2、B先拿   
     *          B拿k个
     * 
     *          num=num-k
     *          调用1
     */


 public void APre(int num){
         int k=num%6;
         int tmp=num-k;
         System.out.println("A先拿求个数:"+k);
         for(int i=0;i<num/6;i++){
             if(tmp>=6){
                 k=(int)(Math.random()*6);
                 System.out.println("B拿球个数:"+k);
                 System.out.println("A拿球个数"+(6-k));
             }
             tmp=tmp-6;
         }
     }
     public void BPre(int num){
        int k=(int)(Math.random()*6);
        System.out.println("B先拿个数:"+k);
        APre(num-k);
     }
展开阅读全文

在一场关于算法的奥林匹克大赛中,有一个俄罗斯人一直赢、赢、赢

11-16

[align=center][img=http://img.my.csdn.net/uploads/201211/16/1353034672_7277.jpg][/img][/align]rnrn假如普京在一个对的时间从克林姆林宫的窗户往外看,他有可能看到河对岸Google莫斯科办公室里那个世界上最牛的程序员。rnrn这个程序员叫做Petr Mitrichev,现年27岁,是一个在Google的搜索引擎部门工作的俄罗斯人,而他的冠军头衔则来自编程大赛。在这些比赛中,黑客们会为了现金奖励、旅游机会、以及在世界上任何其他地方都无法获得的荣誉,编写代码。rnrn“当你在一个竞赛中解决一个难题时,你就会有一种成就感。”Mitrichev在公司总部的草坪上接受采访时这样说道。当时,这个年轻人正穿着一件Google T恤,略显苍白的面相看上去却十分和蔼。rnrnMitrichev毕业于莫斯科州立大学。从2005年开始,他已经成了全球算法编程第一人。在这类编程领域的大奖赛中,题目往往涉及无限游戏面板或者计算n+1个鸣叫牛群的分贝水平等等(看不懂没关系)。这类比赛不仅要求选手有很好的数学洞察力,而且还要求他们的手指在键盘上动得很快。Mitrichev为人熟知的是他的“短暂停顿”——也就是说,他几乎是在看到问题的同时,就可以马上开始答题。rnrn对Mitrichev来说,编程竞赛就像是存在于一个主观世界中的一座难得能让你看到绝对的小岛。“这类比赛的美在于,它是完全自动的,不会牵涉任何的人为评判。”他这么说道,“它是我看过的最最公平的比赛之一。”rnrn不过,从这种竞赛中看到美的还不仅仅有Mitrichev,现在,很多科技公司也同样会通过各类编程竞赛挖掘世界上那些最最聪明、反应最快的程序员。比如说,Facebook和Google这样的科技巨头就会赞助那些最最知名的编程竞赛,并将他们的logo印到活动大厅里,就好像你在温网上看到劳力士的logo一样。rnrnMitrichev开始凸显这方面的才能则是在他10岁的时候——那一年,他随手拿起了哥哥的一本书,那本书讲的是Pascal(一种编程语言)。尽管那会儿Mitrichev位于莫斯科的家里还没有电脑,但一年以后,Mitrichev参加了一场面向俄罗斯高中生的全国性编程大赛,并在一百名选手中排到了第60位。考虑到他那会儿还只有11岁,评审团当时就给他颁了一台电脑作为奖励。等到他15岁的时候,他已经彻底赢得了这个比赛。没过多久,他就开始参加世界级的比赛,并在由北京举办的那一届国际奥林匹克大赛(IOI)中初次登台。rnrn[img=http://img.my.csdn.net/uploads/201211/16/1353034680_9022.jpg][/img]rnrn而Mitrichev赢得他现在的世界排名,则是在他加入编程竞赛的顶级联赛之后——这些每周和每年定期举行的比赛由美国康涅狄格州的TopCoder公司举办,吸引了世界上超过40万的程序员参加。自从他将编程语言从Pascal换成C#之后,Mitrichev的排名便一路飙升。从2005年到现在,他一直蝉联顶级联赛冠军。rnrnMitrichev的技艺和他的竞技风度让他成了一个极客式的英雄。他会将每场比赛的视频放到网上——在每年的比赛中,一个挤满几百号人的酒店大厅的大屏幕上都会显示参赛者电脑显示屏上的实况——而论坛的帖子则会分析他的每一场表现。rnrn“当人们看到他有一个bug时,人群中就会响起一片杂音。而当他把一个bug修复之后,人群中又会响起一片杂音。”TopCoder的CTO这样说道。对外行人来说,这里面似乎没什么看头,但是对这帮人来说,这事就有那样的吸引力。rnrn这些比赛中的问题往往是概述物理世界的真实情况,而这些情况又必须借助数学方法加以描述。要做到这一点,参赛者就必须要写出一个算法,即用数据执行一套运算。比如,Mitrichev最新参加的一个比赛的其中一个问题就是,预测一个无限棋盘上的各个棋子的位置。假如参赛者的程序能够正确处理测试数据,他们就可以得分。而在另外一些比赛中,参赛者还需要提交程序运行时产生的数据。rnrn另外,在这样的体育竞技中,通常奖金的诱惑力也不小,最高额度可以达到2.5万美元(Mitrichev已经拿过好几次了)。而且,因为算法可以驱动硅谷和华尔街的那些赚钱的生意,所以很多顶尖的程序员也会因此被相中,然后被高薪聘用。rnrn但Mitrichev的不同之处在于,他会继续参加比赛——然后争取夺得冠军——即便他现在已经有一份让很多人艳羡的工作——他从2007年开始就一直在Google工作。Mitrichev说,他自己之所以会坚持参加各类比赛,是因为编程在他眼里就是一种休闲。TopCoder每周的比赛大概要花掉90分钟。“你可以选择看个电视节目,但你也可以选择输入(意指编程)。”Mitrichev这样说道。rnrnvia TR 论坛

没有更多推荐了,返回首页