《关于理解约瑟夫环应用题代码.docx》由会员分享,可在线阅读,更多相关《关于理解约瑟夫环应用题代码.docx(4页珍藏版)》请在三一文库上搜索。
1、关于理解约瑟夫环应用题代码题目:有二十九个女生(分别用129号来称呼)围成一圈玩报数游戏,规则是这样的:从1开始数数,当数到3的这个人就退出游戏,而她后面的人接着从1数。如此一直到最后剩下一个人,现在知道最初是从13号女生开始的游戏,问最后剩下的会是第几号女生?要求:1用批处理解答2代码简洁高效3代码通用且不生成临时文件加分原则:以思路为重(如思路独特,请简要说明)完全符合要求的加10分已有两套解决方案,见3楼more和6楼ieutk版主的代码,但个人认为这两套方案均不完美(见本人的跟贴评述),期待完美方案的出现,大家加油了!注:约瑟夫问题约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始
2、报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。最后剩下1号。more:复制代码 代码如下:echo offset str=13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 1 2 3 4 5 6 7 8 9 10 11 12:againfor /f tokens=1,2,4* %a in (%str%) do (if not %c= (set str=%c %d %a %b&goto :again) else (echo %b&pause&exit)ieutk:复制代码 代码如
3、下:echo offsetlocal enabledelayedexpansionfor /l %a in (12 -1 1) do set str= %a !str!for /l %a in (29 -1 13) do set str= %a !str!:mainset ie=0for %a in (%str%) do set /a ie+=1if %ie% neq 1 (for %a in (%str%) do (set /a num+=1if !num! equ 3 (set num=0set str=!str: %a =!)goto main)echo %str%pausebatman
4、:复制代码 代码如下:echo off&setlocal enabledelayedexpansionfor /l %a in (13,1,29) do set str=!str! #%a#for /l %a in (1,1,12) do set str=!str! #%a#:lpfor %a in (!str!) do (set /a n+=1if !n! equ 3 set str=!str: %a=!&set /a n=0)for /f tokens=2 %a in (%str%) do if %a neq goto lpecho 最后剩下的是%str:#=%号&pausenul【关于理解约瑟夫环应用题代码】4