a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > BAT > 正文

批處理解約瑟夫環應用題代碼

2020-07-26 20:23:23
字體:
來源:轉載
供稿:網友
題目:
  有二十九個女生(分別用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:
復制代碼 代碼如下:

@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:
復制代碼 代碼如下:

@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:
復制代碼 代碼如下:

@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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美精品一区二区三区四区五区 | 久久视频一区二区 | 欧美激情五月 | 国产黑人在线 | 成人一区二区三区视频 | 精品久久久久久久久久久久久久久 | a级片视频在线观看 | 超碰日韩| 免费黄色小视频 | 欧美日韩二区三区 | 成人av观看 | 欧美一区二区三区的 | 久久伊人久久 | 国产精品国产三级国产aⅴ9色 | www91在线观看 | 国产一区二区视频精品 | 欧美日韩一区二区视频在线观看 | 一区二区三区四区在线 | 精品日韩一区二区 | 国产亚洲精品久久久久动 | 色综合五月婷婷 | 91午夜精品一区二区三区 | 黄色av网站在线免费观看 | 欧美成人一区二区三区片免费 | 视频在线亚洲 | 在线一级视频 | 日韩三级电影视频 | 久久精品这里热有精品 | 久久综合入口 | 神马九九 | 亚洲成av人片一区二区梦乃 | 日韩一级免费在线观看 | 欧美日韩一区二区三区在线观看 | 午夜精品久久久久久久久 | 最新午夜| 欧美一区二区三区在线视频观看 | 成人福利av | 国产精品99久久久久久久久 | 免费视频一区 | 午夜精品久久久久久久白皮肤 | 伊人干综合 |