• 公司的笔试题之小朋友报数


    公司的笔试题中有这样一道:

    已知30个小朋友(以编号1,2,3...分别表示)围成一个圈。从编号为1的人开始报数,数到3的那个人出列;他的下一个人又从1开始报数,数到3的那个小朋友又出列;依此规律重复下去,直到还剩下最后一个小朋友。

    请用程序算出最后一个小朋友的编号

    今天自己试着做下,中规中矩的写法,毫无花哨之处,只用到了一维数组

    <script language="javascript" type="text/javascript">
    
    (function()
    {
        var num=30;        //总人数
        var count=3;    //计数方式
        
        var allplayer = [num];    
        for(var i=0;i<num;i++){
            allplayer[i]=i+1;
        }
        
        var exitCount=0;    //离开总人数
        var counter=0;    //记录报数
        var curIndex=0;    //当前下标
        
        while(exitCount<num-1)
        {
        
            if(allplayer[curIndex]!=0)counter++;    //已经出列的空位跳过
            
            if(counter==count){
                window.document.write(allplayer[curIndex] + "号出列!<br>");
                allplayer[curIndex]=0;                //标识已经出列的位置为0
                counter = 0;
                exitCount++;
                
            }
            curIndex++;
            if(curIndex==num) curIndex =0;        //重新将下标指向第一个
            
        }    
        for(i=0;i<num;i++)
        {
            if(allplayer[i]!=0) window.document.write("最后剩下的编号是:" + allplayer[i]);
        }
    })();
    </script>
  • 相关阅读:
    CSS动画小结
    CSS效果常见问题
    CSS效果小结
    CSS(非布局样式)
    CSS(选择器)
    SkipList
    实现一个简易版RPC
    实现一个简易版的SpringMvc框架
    关于缓存击穿
    java多线程系列 目录
  • 原文地址:https://www.cnblogs.com/zdkjob/p/2545584.html
Copyright © 2020-2023  润新知