【n皇后问题】
bat吧
全部回复
仅看楼主
level 14
John▫Aº 楼主
当n=1或n>3时n皇后问题有解,下面的程序可以打印出问题的所有解,其中a.len变量储存n的值。
_____________________________________
@echo off
setlocal enabledelayedexpansion
set /a a.len=8
call :queen a 0
pause&exit
:queen arr cur
if !%1.len!==%2 call :print a&exit /b
for /l %%i in (0,1,!%1.len!) do if %%i neq !%1.len! (
set/a %1.%2=%%i,cur=%2+1
set flag=true
for /l %%j in (0,1,%2) do if %%j neq %2 (
set /a "ab=%%i-%1.%%j,ab=(ab*((ab>>31)*2+1)-%2+%%j)*(%1.%%j-%%i)"
if !ab! equ 0 set flag=false
)
if "!flag!"=="true" call :queen %1 !cur!
)
exit /b
:print arr
set/aprn+=1
set/p=%prn%.<nul
for /l %%i in (0,1,!%1.len!) do if %%i neq !%1.len! set/p=!%1.%%i! <nul
echo,
exit /b
2017年10月02日 04点10分 1
level 13
dd
大佬
2017年10月02日 13点10分 2
1