批處理解約瑟夫環(huán)應(yīng)用題代碼
更新時間:2010年10月11日 08:14:20 作者:
約瑟夫問題是個有名的問題:N個人圍成一圈,從第一個開始報數(shù),第M個將被殺掉,最后剩下一個,其余人都將被殺掉。例如N=6,M=5,被殺掉的人的序號為5,4,6,2,3。最后剩下1號。
題目:
有二十九個女生(分別用1-29號來稱呼)圍成一圈玩報數(shù)游戲,規(guī)則是這樣的:從1開始數(shù)數(shù),當(dāng)數(shù)到3的這個人就退出游戲,而她后面的人接著從1數(shù)。。。如此一直到最后剩下一個人,現(xiàn)在知道最初是從13號女生開始的游戲,問最后剩下的會是第幾號女生?
要求:
1 用批處理解答
2 代碼簡潔高效
3 代碼通用且不生成臨時文件
加分原則:
以思路為重(如思路獨特,請簡要說明)
完全符合要求的加10分
已有兩套解決方案,見3樓more和6樓ieutk版主的代碼,但個人認(rèn)為這兩套方案均不完美(見本人的跟貼評述),期
待完美方案的出現(xiàn),大家加油了?。。?
注:約瑟夫問題
約瑟夫問題是個有名的問題:N個人圍成一圈,從第一個開始報數(shù),第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
有二十九個女生(分別用1-29號來稱呼)圍成一圈玩報數(shù)游戲,規(guī)則是這樣的:從1開始數(shù)數(shù),當(dāng)數(shù)到3的這個人就退出游戲,而她后面的人接著從1數(shù)。。。如此一直到最后剩下一個人,現(xiàn)在知道最初是從13號女生開始的游戲,問最后剩下的會是第幾號女生?
要求:
1 用批處理解答
2 代碼簡潔高效
3 代碼通用且不生成臨時文件
加分原則:
以思路為重(如思路獨特,請簡要說明)
完全符合要求的加10分
已有兩套解決方案,見3樓more和6樓ieutk版主的代碼,但個人認(rèn)為這兩套方案均不完美(見本人的跟貼評述),期
待完美方案的出現(xiàn),大家加油了?。。?
注:約瑟夫問題
約瑟夫問題是個有名的問題:N個人圍成一圈,從第一個開始報數(shù),第M個將被殺掉,最后剩下一個,其余人都將被殺掉。例如N=6,M=5,被殺掉的人的序號為5,4,6,2,3。最后剩下1號。
more:
復(fù)制代碼 代碼如下:
@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:
復(fù)制代碼 代碼如下:
@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:
復(fù)制代碼 代碼如下:
@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
您可能感興趣的文章:
- 一個報數(shù)游戲js版(約瑟夫環(huán)問題)
- 約瑟夫環(huán)問題(數(shù)組法)c語言實現(xiàn)
- C++循環(huán)鏈表之約瑟夫環(huán)的實現(xiàn)方法
- 詳解約瑟夫環(huán)問題及其相關(guān)的C語言算法實現(xiàn)
- java 實現(xiàn)約瑟夫環(huán)的實例代碼
- python超簡單解決約瑟夫環(huán)問題
- php解決約瑟夫環(huán)示例
- 深入理解約瑟夫環(huán)的數(shù)學(xué)優(yōu)化方法
- 約瑟夫環(huán)問題的PHP實現(xiàn) 使用PHP數(shù)組內(nèi)部指針操作函數(shù)
- javascript循環(huán)鏈表之約瑟夫環(huán)的實現(xiàn)方法
相關(guān)文章
cmd批量打開網(wǎng)頁和關(guān)閉網(wǎng)頁的批處理代碼
這篇文章主要介紹了cmd批量打開網(wǎng)頁和關(guān)閉網(wǎng)頁的批處理代碼,需要的朋友可以參考下2017-03-03Emeditor與dos(cmd)經(jīng)典使用技巧之批量生成網(wǎng)頁
首先我們準(zhǔn)備好工具: 工作目錄:D:\jb51.txt 里邊放一個你的有內(nèi)容的index.html文件, 然后我們把要生成的網(wǎng)頁弄成這種格式:2008-06-06批處理批量拷貝當(dāng)前目錄及多級子目錄內(nèi)的txt文件到指定目錄下
想做個批處理批量拷貝當(dāng)前目錄及多級子目錄(3級)內(nèi)的文件到指定目錄下,并且只拷貝>100k的txt,有同名文件直接覆蓋,求大佬支持2023-08-08oracle、mysql數(shù)據(jù)庫停止與啟動的批處理文件
每當(dāng)機器啟動很慢滴時,需要查詢原因,并處理了,以下是針對window服務(wù)的批處理文件,需要的朋友可以參考下2017-09-09CMD命令詳解 目錄類命令(md、cd、rd、dir、path、tree、deltree)
這篇文章主要介紹了CMD命令詳解 目錄類命令,注意包括md、cd、rd 、dir、path、tree、deltree幾個命令的使用,需要的朋友可以參考下2017-03-03CMD中使用attrib命令設(shè)置文件只讀、隱藏屬性詳解
這篇文章主要介紹了使用attrib命令設(shè)置文件只讀、隱藏屬性詳解,并用一個完整流程來說明文件屬性的變化,需要的朋友可以參考下2014-08-08