源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

批处理解约瑟夫环应用题代码

  • 时间:2021-04-02 06:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:批处理解约瑟夫环应用题代码
题目:   有二十九个女生(分别用1-29号来称呼)围成一圈玩报数游戏,规则是这样的:从1开始数数,当数到3的这个人就退出游戏,而她后面的人接着从1数。。。如此一直到最后剩下一个人,现在知道最初是从13号女生开始的游戏,问最后剩下的会是第几号女生? 要求:   1 用批处理解答   2 代码简洁高效   3 代码通用且不生成临时文件 加分原则:   以思路为重(如思路独特,请简要说明)   完全符合要求的加10分   已有两套解决方案,见3楼more和6楼ieutk版主的代码,但个人认为这两套方案均不完美(见本人的跟贴评述),期 待完美方案的出现,大家加油了!!! 注:约瑟夫问题   约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的人的序号为5,4,6,2,3。最后剩下1号。 more:
[u]复制代码[/u] 代码如下:
@echo off set "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" :again for /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:
[u]复制代码[/u] 代码如下:
@echo off setlocal enabledelayedexpansion for /l %%a in (12 -1 1) do set "str= %%a !str!" for /l %%a in (29 -1 13) do set "str= %%a !str!" :main set "ie=0" for %%a in (%str%) do set /a ie+=1 if %ie% neq 1 ( for %%a in (%str%) do ( set /a num+=1 if !num! equ 3 ( set "num=0" set "str=!str: %%a =! ) ) goto main ) echo %str% pause
  batman:
[u]复制代码[/u] 代码如下:
@echo off&setlocal enabledelayedexpansion for /l %%a in (13,1,29) do set "str=!str! #%%a#" for /l %%a in (1,1,12) do set "str=!str! #%%a#" :lp for %%a in (!str!) do ( set /a n+=1 if !n! equ 3 set "str=!str: %%a=!"&set /a n=0 ) for /f "tokens=2" %%a in ("%str%") do if "%%a" neq "" goto lp echo 最后剩下的是%str:#=%号&pause>nul
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部