今天早上,群里有人除了道题:
“随便给一个数 比如100,那么从1到100围成一个圆圈,然后就类似123123报数一样逢3就舍掉,一直这样轮询 那么最后剩下来的那个数是多少? ”
这个也算是老题目了,园子里边也曾针对此题有过激烈的讨论,那时候追求用oo来解决。如今既然又有人提了出来,我便抽了点时间写了写自己的想法:
代码
<script type="text/javascript">
var a_game = function(pNum){
var players = [];
for(var i=1;i<=pNum;i++){
players.push(i);
}
var flag=0;
while(players.length>1){
var outPlayerNum = 0,len=players.length;
for(var i=0;i<len;i++){
flag++;
if(flag==3){
flag=0;
document.writeln("出局:"+players[i-outPlayerNum]);
players.splice(i-outPlayerNum,1);
outPlayerNum++;
}
}
}
return players[0];
};
document.writeln("<br/>剩下:"+a_game(100));
</script>
var a_game = function(pNum){
var players = [];
for(var i=1;i<=pNum;i++){
players.push(i);
}
var flag=0;
while(players.length>1){
var outPlayerNum = 0,len=players.length;
for(var i=0;i<len;i++){
flag++;
if(flag==3){
flag=0;
document.writeln("出局:"+players[i-outPlayerNum]);
players.splice(i-outPlayerNum,1);
outPlayerNum++;
}
}
}
return players[0];
};
document.writeln("<br/>剩下:"+a_game(100));
</script>
结果如下:
代码
出局:3 出局:6 出局:9 出局:12 出局:15 出局:18 出局:21 出局:24 出局:27 出局:30 出局:33 出局:36 出局:39 出局:42 出局:45 出局:48 出局:51 出局:54 出局:57 出局:60 出局:63 出局:66 出局:69 出局:72 出局:75 出局:78 出局:81 出局:84 出局:87 出局:90 出局:93 出局:96 出局:99 出局:2 出局:7 出局:11 出局:16 出局:20 出局:25 出局:29 出局:34 出局:38 出局:43 出局:47 出局:52 出局:56 出局:61 出局:65 出局:70 出局:74 出局:79 出局:83 出局:88 出局:92 出局:97 出局:1 出局:8 出局:14 出局:22 出局:28 出局:35 出局:41 出局:49 出局:55 出局:62 出局:68 出局:76 出局:82 出局:89 出局:95 出局:4 出局:13 出局:23 出局:32 出局:44 出局:53 出局:64 出局:73 出局:85 出局:94 出局:5 出局:19 出局:37 出局:50 出局:67 出局:80 出局:98 出局:17 出局:40 出局:59 出局:86 出局:10 出局:46 出局:77 出局:26 出局:71 出局:31 出局:100 出局:58
剩下:91
剩下:91
转自:http://www.cnblogs.com/bravfing/archive/2010/08/04/1791782.html