boat源碼
❶ Dayboat監控軟體是真是假
摘要 您好, dayboat軟體是真的,是一款非常好用的,用於生成源代碼注釋的一款vs插件的軟體,dayboat這款軟體可以完美地支持c,c++等等語言,注釋的風格可以自由配置,並且可以轉化為qt,javadoc等等文檔形式,創建或者更新高配置文件的xml等等格式文檔注釋代碼元素等等。
❷ 在html中alt是什麼意思
工具提示的意思,好像只能用在圖片上,把滑鼠移動到設置好 Alt 標記的圖片上就會出現工具提示,具體的你到 FontPage中插入一幅圖並設置一個工具提示文本,再看一下源碼就會清楚了。
❸ 這是源代碼
沒問題請採納兩個回答
model:
sets:
camps/1..10/;
trips/1..100/:beginingmoment,periodtime,boat,raft;
links1(trips,camps):time;
endsets
min=@sum(trips(i):beginingmoment(i));
@for(trips(i):periodtime(i)=225/44*raft(i)+225/88*boat(i));
@for(trips(i):raft(i)+boat(i)=1);
@for(trips(i):raft(i)*boat(i)=0);
@for(trips(i):11*periodtime(i)+@sum(camps(k):time(i,k))>=6*24);
@for(trips(i):11*periodtime(i)+@sum(camps(k):time(i,k))<=18*24);
@for(trips(i):beginingmoment(i)+11*periodtime(i)+@sum(camps(k):time(i,k))<=60*24);
@for(trips(i):@for(trips(j)|j#gt#i:beginingmoment(i)<=beginingmoment(j)));
@for(trips(j):
@for(camps(l):
@for(trips(i)|i#ne#j:
((beginingmoment(j)+l*periodtime(j)+@sum(camps(k)|k#le#(l-1):time(j,k))#ge#beginingmoment(i)+l*periodtime(i)+@sum(camps(k)|k#lt#l:time(i,k)))
#or#
(beginingmoment(j)+l*periodtime(j)+@sum(camps(k)|k#le#l:time(j,k))#le#beginingmoment(i)+l*periodtime(i)+@sum(camps(k)|k#lt#l:time(i,k)))
#or#
(time(i,l)#eq#0))
=1;
)
)
);
@for(trips(i):beginingmoment(i)>=0);
@for(links1(i,k):time(i,k)>=0);
@for(trips(i):@bin(boat(i)));
@for(trips(i):@bin(raft(i)));
end
❹ Dayboat軟體是真的假的
摘要 dayboat軟體是真的,是一款非常好用的,用於生成源代碼注釋的一款vs插件的軟體,dayboat這款軟體可以完美地支持c,c++等等語言,注釋的風格可以自由配置,並且可以轉化為qt,Javadoc等等文檔形式,創建或者更新高配置文件的xml等等格式文檔注釋代碼元素等等
❺ 失落的國度游戲的源代碼
隨著十周年慶典活動的進行,和記娛樂在近期不僅再度積累了大量的人氣,而且也順勢推出了多款新游,以便帶給玩家更為豐富的游戲體驗。在最近上線的多款新游中,有《金豬》這樣以休閑娛樂為主題的游戲,也有以尋寶為主題的《阿里巴巴》等,但最吸引玩家關注的還是由游戲推出的《失落的國度》,以及在前段時間上線的免費旋轉福利。
作為在周年慶典期間推出的新游,《失落的國度》不論在游戲打造,都可以說得上是相當用心。首先在畫面風格上,《失落的國度》不像目前的多數游戲偏重於休閑風格,畫面更為精細,場景更加龐大,再搭配以3D建模技術設計的人物形象,整款游戲都透露出一股史詩般畫卷的氣息。
其次在玩法方面,《失落的國度》仍採用了大多數游戲通用的旋轉類游戲操作,非常簡單容易上手,但在之前游戲的基礎上,也增添了許多獨有的趣味。比如在游戲中,玩家可以通過收集盾牌符號獲得圓桌騎士,以及觸發一定數量的免費旋轉,而當收集完全部12個圓桌騎士之後,即可觸發財富圓桌獎勵環節,為玩家帶來豐厚的游戲獎勵。
除此之外,在這款游戲中還有代表著萬能符號的紅衣女子圖標,以及史詩戰斗游戲模式、永恆愛情獎勵游戲等,增添了許多趣味。
你可以在源碼之家找找。。
❻ 2個傳教士與2個食人鬼過河問題 c語言程序怎麼寫
有3個傳教士和3個野人要過河,只有一艘船,這艘船每次只能載2個人過河,且無論哪邊野人的數量大於傳教士的數量時,野人就會吃掉傳教士。怎樣讓他們都安全過河?
C語言源代碼:
#include <stdio.h>
#include <string.h>
#define STEP_MAX 20 //來回過河的次數
#define KIND_NUM 3 //每個種類的數量
#define BOAT_NUM 2 //船的載重量
typedef enum
{
BOAT_THIS,//船在本岸
BOAT_THAT,//船在對岸
} boat_t;
typedef enum
{
ROAD_GO,//過河
ROAD_COME,//回來
} road_t;
typedef struct
{
int ye;//對岸野人數量
int man;//對岸傳教士數量
boat_t boat;//船是否在對岸
} state_t;//一種局面
typedef struct
{
int ye;//野人過河數量
int man;//傳教士過河的數量
road_t road;//回來或過河
} step_t;//一個步驟
state_t states[STEP_MAX]={0};
step_t steps[STEP_MAX]={0};
//判斷所有的野人和傳教士是否都到了對岸
bool final(state_t s)
{
const state_t cs=
{
KIND_NUM,
KIND_NUM,
BOAT_THAT
};
if(memcmp(&cs,&s,sizeof(state_t))==0)
{
return true;
}
return false;
}
//是否會發生野人殺傳教士
bool bad(state_t s)
{
if(((KIND_NUM-s.ye)>(KIND_NUM-s.man) && (KIND_NUM-s.man)>0)
||(s.ye>s.man && s.man>0))
{
return true;
}
return false;
}
//第n種局面是否跟前面的相重復
bool repeat(state_t s[],int n)
{
int i;
for (i = 0; i < n; i++)
{//已經有這種情況了
if (memcmp(&states[i], &states[n], sizeof(states[i])) == 0)
{
return true;
}
}
return false;
}
void output(step_t steps[STEP_MAX],int n)
{
char *kinds[KIND_NUM]={"野人","傳教士"};
char *routine[2]={"過河.","回來."};
int i;
for (i = 0; i < n; i++)
{
if((steps[i].ye * steps[i].man)>0)
{
printf("%d個%s和%d個%s%s\n",steps[i].ye,kinds[0],
steps[i].man,kinds[1],routine[steps[i].road]);
}
else if(steps[i].ye>0)
{
printf("%d個%s%s\n",steps[i].ye,kinds[0],
routine[steps[i].road]);
}
else if(steps[i].man>0)
{
printf("%d個%s%s\n",steps[i].man,kinds[1],
routine[steps[i].road]);
}
}
printf("\n");
}
//搜索過河方案(n表示過河次數)
void search(int n)
{
int i,j;
if(n>STEP_MAX)
{//步數限制太少了
printf("Step Overflow!");
return;
}
if(final(states[n]))
{//都到對岸了
output(steps,n);
return;
}
if(bad(states[n]))
{//發生了野人殺傳教士了
return;
}
if(repeat(states,n))
{//與前面的局面相重復了
return;
}
if(states[n].boat==BOAT_THIS)
{//船在本岸
for (i = 0; i <= BOAT_NUM && i<=(KIND_NUM-states[n].ye); i++)
for (j = 0; j <= BOAT_NUM-i && j<=(KIND_NUM-states[n].man); j++)
{
if(i==0 &&j==0)
{
continue;
}
steps[n].ye=i;
steps[n].man=j;
steps[n].road=ROAD_GO;
memcpy(&states[n+1], &states[n], sizeof(state_t));
states[n+1].ye+=i;
states[n+1].man+=j;
states[n+1].boat=BOAT_THAT;
search(n+1);
}
}
else
{
for (i = 0; i <= BOAT_NUM && i<=states[n].ye; i++)
for (j = 0; j <= BOAT_NUM-i && j<=states[n].man; j++)
{
if(i==0 &&j==0)
{
continue;
}
steps[n].ye=i;
steps[n].man=j;
steps[n].road=ROAD_COME;
memcpy(&states[n+1], &states[n], sizeof(state_t));
states[n+1].ye-=i;
states[n+1].man-=j;
states[n+1].boat=BOAT_THIS;
search(n+1);
}
}
}
int main()
{
search(0);
return 0;
}
❼ 求批處理游戲!
數獨:
@echo off
Setlocal Enabledelayedexpansion
rem 核心代碼terse 游戲moniuming
color 3e&title 數字九宮格游戲
echo.&echo 歡迎使用本綠色免安裝版九宮格數字游戲, 在進入游戲前請詳細閱讀此說明,
echo.&echo 進入游戲會出現以下的畫面,第一行和第一列分別為橫坐標和縱坐標,僅作參考,
echo.&echo 游戲規則為: 用數字替換各個符號, 使每行和每列都出現 1~9 這 9 個數字,
echo.&echo 並且 9 個 3^*3 的區域里也要包含 1~9 這 9 個數字. (左圖^=^=^>右圖)
echo.&echo 玩法: 比如下圖中要把 4 填在第 3 行第 1 列的位置,輸入 431 然後回車即可.
echo.&echo 請按任意鍵進入游戲, 祝你玩得愉快...... ^^_^^
echo.&echo 1 2 3 4 5 6 7 8 9
echo.
echo. 1 6 8 7 _ / 1 - + 2 6 8 7 4 9 1 5 3 2
echo. 2 9 3 - 5 8 _ / + 7 9 3 1 5 8 2 4 6 7
echo. 3 / 5 _ 3 + 7 1 8 - 4 5 2 3 6 7 1 8 9
echo. 4 / 6 4 - 1 + _ 9 8 5 6 4 2 1 3 7 9 8
echo. 5 2 9 8 7 5 + / _ - 2 9 8 7 5 6 3 1 4
echo. 6 7 - _ 9 4 + 2 5 / 7 1 3 9 4 8 2 5 6
echo. 7 _ 4 9 6 + 5 / - 1 3 4 9 6 7 5 8 2 1
echo. 8 - _ 5 8 / + 6 4 3 1 7 5 8 2 9 6 4 3
echo. 9 _ / 6 - 3 4 9 + 5 8 2 6 1 3 4 9 7 5
pause>nul&cls
set "cod= +-_/\#"&set "st= 1 2 3 4 5 6 7 8 9"&set "color_=12345689abcde"
set "kong= "
set "echo_=好 極 了, 完 全 正 確, 恭 喜 你, 繼 續 努 力 喔 "
for /l %%a in (1 1 80) do (set "tui=!tui!")
:again
color 3e&set "input=4"
for /l %%a in (1 1 9) do (
for /l %%b in (1 1 9) do (set "_%%a%%b="&set "%%a%%b=")
)
echo.&echo 1~6為難度選擇,4為默認的難度
echo.&set /p input=請輸入:
cls
if %input% gtr 6 (echo.&echo 選擇錯誤&goto :again)
if %input% lss 1 (echo.&echo 選擇錯誤&goto :again)
for /l %%i in (1 1 9) do echo.
echo 正在生成游戲,請稍候...
:st
for /l %%i in (1 1 9) do (set "mor%%i="&set "%%i=")
for /l %%i in (1 1 9) do call:lp %%i
for /l %%a in (1 1 9) do (set "moniuming%%a=!mor%%a!")
:lp3
set /a "num1=%random%%%9+1"
if defined %num1% goto :lp3
set "%num1%=god"
for /f "tokens=%num1%" %%g in ("!mor%line%!") do (
set /a "num2+=1","_%line%%num1%=god"
call set "%line%%num1%=%%cod:~!num2!,1%%"
call call set "mor%line%=%%%%mor%line%:%%g=%%cod:~!num2!,1%%%%%%"
)
if %dfc% lss %input% (set /a "dfc+=1"&goto :lp3)
for /l %%a in (1 1 9) do (set "%%a=")
set /a "num3+=1","num2=0"
if %num3% lss 9 (set /a "line+=1"&set "dfc=1"&goto :lp3)
cls&echo %st%&echo.
for /l %%a in (1 1 9) do (call echo %%a %%mor%%a%%)
:lp4
echo.&echo 請按照"替換數字,行,列"(不包括引號)的順序連續輸入數字
echo 或者ans顯示答案(默認),new開啟新游戲,out退出本游戲
:lp5
color 3e&echo.&set "ent=ans"&set /p ent=請輸入:
if /i "%ent%"=="out" (
cls
for /l %%a in (1 1 9) do echo.
echo 謝謝使用本游戲,再見......
ping -n 4 127.1>nul&exit
)
if /i "%ent%"=="ans" (
for /l %%l in (1 1 9) do (echo !moniuming%%l!)
goto :again
)
if /i "%ent%"=="new" cls&goto :again
set "ma=%ent:~,1%"&set "mb=%ent:~1,1%"&set "mc=%ent:~2,1%"
if not defined _%mb%%mc% (
color fc&echo.&echo 第%mb%行第%mc%列為非替換位置
ping -n 3 127.1>nul&goto :lp5
)
for %%a in (!mor%mb%!) do (
if "%%a"=="%ma%" (
color fc&echo.&echo 第 %mb% 行已經存在 "%ma%"
ping -n 3 127.1>nul&goto :lp5
)
)
for /l %%a in (1 1 9) do (
if "%ma%"=="!%%a%mc%!" (
color fc&echo.&echo 第 %mc% 列已經存在 "%ma%"
ping -n 3 127.1>nul&goto :lp5
)
)
for /f "tokens=%mc%" %%a in ("!mor%mb%!") do (
set "mor%mb%=!mor%mb%:%%a=%ma%!"&set "%mb%%mc%=%ma%"
)
cls
echo %st%&echo.
for /l %%a in (1 1 9) do (echo %%a !mor%%a!)
for /l %%a in (1 1 9) do (if "!mor%%a!"=="!moniuming%%a!" (set /a right+=1))
if "%right%"=="9" (
call :lp6
set "right=0"&goto :again
)
set "right=0"
goto :lp4
:lp
for /l %%i in (1 1 9) do set ".!random!!random!!random!=%%i"
for /f "tokens=1,2 delims==" %%i in ('set .') do (set "str=%%j !str!"&set "%%i=")
for /l %%i in (1 1 9) do set "%1%%i="
set "var=%str%"&set/a lie=1,hx=1,hy=%1-1,lx=1,ly=3,a=%1%%3,dfc=1,line=1,num2=0,num3=0
if %1 geq 4 (
if %1 leq 6 (set/a hx=4) else (set hx=7)
)
:lp0
if %lie% geq 4 (
if %lie% leq 6 (set/a lx=4,ly=6) else (set/a lx=7,ly=9)
)
for %%a in (!var!) do (
for /l %%i in (1 1 %1) do (
if %%a equ !%%i%lie%! (set var=!var:%%a=!&goto lp0)
)
if %a% neq 1 (
for /l %%j in (%hx% 1 %hy%) do (
for /l %%k in (%lx% 1 %ly%) do (
if %%a equ !%%j%%k! set "var=!var:%%a=!"&goto lp0
)
)
)
set "%1!lie!=%%a"
if !lie! lss 9 (set/a lie+=1&set "str=!str:%%a=!"&set "var=!str!"&goto lp0)
)
set "str="&set "lie="
if "!%19!"=="" set/a ttl+=1&if !ttl! gtr 40 (set "ttl="&goto st) else goto lp
for /l %%i in (1 1 9) do (set "mor%1=!mor%1!!%1%%i! ")
set "ttl="&goto :eof
:lp6
echo.
for /l %%a in (1 1 40) do (
set "show=!echo_:~0,%%a!"
set /a "col1=!random!%%13","col2=!random!%%13"
if not "!col1!"=="!col2!" call color %%color_:~!col1!,1%%%%color_:~!col2!,1%%
set /p=!tui!!kong!!show!<nul
ping -n 1 127.1>nul
)
echo.
人鬼過河:
@echo off
title 人鬼過河
color e9
echo r代表人,g代表鬼。
echo 船隻可以裝兩個人/鬼,或一人一鬼。
echo 任何一邊鬼都不能比人多,
echo 否則人會被吃掉哦。
echo S重來,E退出。
echo.
:ready
set fx=A→B
set sidea=rrrggg
set sideb=
:start
echo =======now========
echo Side A:%sidea%
echo ------------------
echo.
echo River
echo.
echo Boat:%fx%
echo.
echo ------------------
echo Side B:%sideb%
echo.
:input
set /p boat=請輸入:
if /i "%boat%"=="s" goto ready
if /i "%boat%"=="e" exit
if "%boat%"=="" echo 沒人開船了。&&goto input
if not "%boat:~2,1%"=="" echo 不能裝那麼多。&&goto input
set bt1=%boat:~0,1%
set bt2=%boat:~1,1%
if /i not %bt1%==r if /i not %bt1%==g echo 你輸錯了。&&goto input
if /i not "%bt2%"=="r" if /i not "%bt2%"=="g" if not "%bt2%"=="" echo 你輸錯了。&&goto input
goto %fx%
:A→B
echo %sidea%|find /i "%bt1%">nul||echo Side A 沒有%bt1%。&&goto input
if not "%bt2%"=="" echo %sidea%|find /i "%bt2%">nul||echo Side A 沒有%bt2%。&&goto input
if "%bt1%"=="%bt2%" echo %sidea%|find /i "%boat%">nul||echo Side A 沒有兩個%bt1%。&&goto input
if /i %bt1%==r set sidea=%sidea:~1%&& set sideb=r%sideb%
if /i %bt1%==g set sidea=%sidea:~0,-1%&& set sideb=%sideb%g
if /i "%bt2%"=="r" set sidea=%sidea:~1%&& set sideb=r%sideb%
if /i "%bt2%"=="g" set sidea=%sidea:~0,-1%&& set sideb=%sideb%g
call :check
set fx=B→A
cls
goto start
:B→A
echo %sideb%aaa|find /i "%bt1%">nul||echo Side B 沒有%bt1%。&&goto input
if not "%bt2%"=="" echo %sideb%|find /i "%bt2%">nul||echo Side B 沒有%bt2%。&&goto input
if "%bt1%"=="%bt2%" echo %sideb%|find /i "%boat%">nul||echo Side B 沒有兩個%bt1%。&&goto input
if /i %bt1%==r set sideb=%sideb:~1%&& set sidea=r%sidea%
if /i %bt1%==g set sideb=%sideb:~0,-1%&& set sidea=%sidea%g
if /i "%bt2%"=="r" set sideb=%sideb:~1%&& set sidea=r%sidea%
if /i "%bt2%"=="g" set sideb=%sideb:~0,-1%&& set sidea=%sidea%g
call :check
set fx=A→B
cls
goto start
:check
if "%sideb%"=="rrrggg" cls&&echo You win!&&goto end
set ars=0
set ags=0
set brs=0
set bgs=0
if "%sidea:~0,1%"=="r" set /a ars+=1 >nul
if "%sidea:~0,1%"=="g" set /a ags+=1 >nul
if "%sidea:~1,1%"=="r" set /a ars+=1 >nul
if "%sidea:~1,1%"=="g" set /a ags+=1 >nul
if "%sidea:~2,1%"=="r" set /a ars+=1 >nul
if "%sidea:~2,1%"=="g" set /a ags+=1 >nul
if "%sidea:~3,1%"=="r" set /a ars+=1 >nul
if "%sidea:~3,1%"=="g" set /a ags+=1 >nul
if "%sidea:~4,1%"=="r" set /a ars+=1 >nul
if "%sidea:~4,1%"=="g" set /a ags+=1 >nul
if "%sidea:~5,1%"=="r" set /a ars+=1 >nul
if "%sidea:~5,1%"=="g" set /a ags+=1 >nul
if %ags% gtr %ars% if %ars% gtr 0 (
cls
echo Side A 有人被吃掉了。
goto end
)
if "%sideb:~0,1%"=="r" set /a brs+=1 >nul
if "%sideb:~0,1%"=="g" set /a bgs+=1 >nul
if "%sideb:~1,1%"=="r" set /a brs+=1 >nul
if "%sideb:~1,1%"=="g" set /a bgs+=1 >nul
if "%sideb:~2,1%"=="r" set /a brs+=1 >nul
if "%sideb:~2,1%"=="g" set /a bgs+=1 >nul
if "%sideb:~3,1%"=="r" set /a brs+=1 >nul
if "%sideb:~3,1%"=="g" set /a bgs+=1 >nul
if "%sideb:~4,1%"=="r" set /a brs+=1 >nul
if "%sideb:~4,1%"=="g" set /a bgs+=1 >nul
if %bgs% gtr %brs% if %brs% gtr 0 (
cls
echo Side B 有人被吃掉了。
goto end
)
goto :EOF
:end
set /p restart=再來?(Y,N)
if /i "%restart%"=="y" cls&&goto ready
猜數游戲:
@echo off&color 1f&mode con cols=55 lines=30
setlocal enabledelayedexpansion
title 猜數字游戲 by zw19750516
echo.&echo.
echo.&echo ***** 游戲規則 *****
echo.&echo 程序會自動生成一組四個互不相同的0-9內的整數,
echo.&echo 請你根據猜測和判斷,每次輸入一組四個互不相同
echo.&echo 0-9內的整數,中間請用空格格開,如:1 2 3 4,
echo.&echo 程序會將你每次輸入的數組與其生成的數組進行比
echo.&echo 較,並將比較的結果輸出屏幕上以幫助你進一步的
echo.&echo 判斷,直到你所輸入的數組與其生成的數組的數值
echo.&echo 和次序完全相同,或你已用完了所有的猜測機會。
echo.&echo 如果你已經看懂了規則,請按任意鍵開始本次游戲。
set var=A&pause>nul
:begin
set /a a=%random%%%10
for %%a in (%var%) do if %%a equ %a% goto begin
set var=%var% %a%
if "%var:~8%" equ "" goto begin
set var=%var:~2%&set m=0
:again
set /a n=0,v=0,ws=0,s=0,t=10-m
if %t% equ 0 goto end
cls&echo.&echo 請注意你總共只有10次機會,現在還剩下%t%次機會
if "%m%" neq "0" for /l %%i in (1,1,%m%) do echo.&echo !_%%i!
set codes=A
echo.&set /p code= 請在此輸入:
echo %code: =%|findstr "[^0-9]"&&goto wrong
for %%a in (%code%) do (
for %%i in (!codes!) do if %%i equ %%a goto wrong
set codes=!codes! %%a
set /a n+=1
)
if %n% neq 4 goto wrong
set codes=%codes:~2%
for %%i in (%codes%) do (
set str=%%i
if "!str:~1!" neq "" goto wrong
)
for %%a in (%var%) do (
set /a v+=1,x=0
for %%i in (%codes%) do (
set /a x+=1
if %%a equ %%i if !x! equ !v! (
set /a ws+=1,s+=1
) else (
set /a s+=1
)
)
)
set /a m+=1
if "%var%" equ "%codes%" goto suc
set _%m%= %codes%中數值正確的有%s%個,其中位置數值都正確的有%ws%個&goto again
:wrong
cls
echo.&echo 所輸入的非合法十進制整數,或數值不合要求,
echo.&echo 或有重復數,或輸入的數值個數不是4個。
ping /n 2 127.1>nul&goto again
:suc
if %m% equ 1 cls&echo.&echo 不會吧,1次就搞定了,你是不是神仙下凡啊?&goto select
if %m% leq 3 cls&echo.&echo 你真是聰明絕頂啊,只用%m%次就猜中了。&goto select
if %m% leq 5 cls&echo.&echo 看來你還是很厲害,用了%m%次就猜中了。&goto select
if %m% leq 9 cls&echo.&echo 呵呵,猜了%m%次,勉強過關了。&goto select
if %m% equ 10 cls&echo.&echo 你太精明了,硬是把機會給用完成功過關。
:select
ping /n 3 127.1>nul
cls&echo.&set select=&set /p select= 是否再來一次(是就輸入y/Y,其它任意鍵退出):
if /i "%select%" equ "y" (goto begin) else (goto exit)
:end
cls&echo.&echo 對不起你已經用完了所有的機會了。正確答案是%var%&goto select
:exit
ping /n 3 127.1>nul
還要請去論壇http://www.bathome.cn
或加QQ535470331
或HI我
❽ 用java實現野人傳教士過河問題
//CrossRiverQuestion.java
importjava.util.ArrayList;
importjava.util.List;
publicclassCrossRiverQuestion{
publicstaticvoidmain(String[]args){
CrossRiverQuestionq=newCrossRiverQuestion(5,4);
q.solveQuestion();
}
privateintpeoNum;
privateintsavageNum;
privateList<Node>resultList=newArrayList<Node>();
publicList<Node>solveQuestion(){
Noden=newNode(peoNum,savageNum,0,0,0,newArrayList<Integer>(),0,0);
booleandfsResult=dfs(n);
if(dfsResult){
resultList.add(0,n);
for(Nodenode:resultList){
System.out.println("左岸傳教士:"+node.getLeftPeo()+"左岸野人:"+node.getLeftSavage()+"右岸傳教士:"+node.getRightPeo()+"右岸野人:"+node.getRightSavage()+"船上傳教士:"+node.getOnBoatPeoNum()+"船上野人:"+node.getOnBoatSavageNum());
}
returnresultList;
}
returnnull;
}
publicCrossRiverQuestion(intpeoNum,intsavageNum){
super();
this.peoNum=peoNum;
this.savageNum=savageNum;
}
privatebooleandfs(Noden){
if(n.hasVisited())returnfalse;
n.addCheckSum();
if(n.getLeftPeo()==0&&n.getLeftSavage()==0)returntrue;
if(n.getLeftPeo()<0||n.getRightPeo()<0||n.getLeftSavage()<0||n.getRightSavage()<0){
returnfalse;
}
if(n.getLeftPeo()<n.getLeftSavage()&&n.getLeftPeo()>0)returnfalse;
if(n.getRightPeo()<n.getRightSavage()&&n.getRightPeo()>0)returnfalse;
if(n.getCURR_STATE()==n.getStateBoatLeft()){
Noden1=newNode(n.getLeftPeo()-1,n.getLeftSavage()-1,n.getRightPeo()+1,n.getRightSavage()+1,n.getStateBoatRight(),n.getNodesCheckSum(),1,1);
if(dfs(n1)){
resultList.add(0,n1);
returntrue;
}
Noden4=newNode(n.getLeftPeo()-2,n.getLeftSavage(),n.getRightPeo()+2,n.getRightSavage(),n.getStateBoatRight(),n.getNodesCheckSum(),2,0);
if(dfs(n4)){
resultList.add(0,n4);
returntrue;
}
Noden5=newNode(n.getLeftPeo(),n.getLeftSavage()-2,n.getRightPeo(),n.getRightSavage()+2,n.getStateBoatRight(),n.getNodesCheckSum(),0,2);
if(dfs(n5)){
resultList.add(0,n5);
returntrue;
}
}
else{
Noden6=newNode(n.getLeftPeo(),n.getLeftSavage()+1,n.getRightPeo(),n.getRightSavage()-1,n.getStateBoatLeft(),n.getNodesCheckSum(),0,1);
if(dfs(n6)){
resultList.add(0,n6);
returntrue;
}
Noden7=newNode(n.getLeftPeo()+1,n.getLeftSavage(),n.getRightPeo()-1,n.getRightSavage(),n.getStateBoatLeft(),n.getNodesCheckSum(),1,0);
if(dfs(n7)){
resultList.add(0,n7);
returntrue;
}
Noden1=newNode(n.getLeftPeo()+1,n.getLeftSavage()+1,n.getRightPeo()-1,n.getRightSavage()-1,n.getStateBoatLeft(),n.getNodesCheckSum(),1,1);
if(dfs(n1)){
resultList.add(0,n1);
returntrue;
}
Noden4=newNode(n.getLeftPeo()+2,n.getLeftSavage(),n.getRightPeo()-2,n.getRightSavage(),n.getStateBoatLeft(),n.getNodesCheckSum(),2,0);
if(dfs(n4)){
resultList.add(0,n4);
returntrue;
}
Noden5=newNode(n.getLeftPeo(),n.getLeftSavage()+2,n.getRightPeo(),n.getRightSavage()-2,n.getStateBoatLeft(),n.getNodesCheckSum(),0,2);
if(dfs(n5)){
resultList.add(0,n5);
returntrue;
}
}
returnfalse;
}
publicList<Node>getResultList(){
returnresultList;
}
}
Node.java
importjava.util.ArrayList;
importjava.util.List;
publicclassNode{
privateList<Integer>nodesCheckSum=newArrayList<Integer>();
privateintleftPeo;
privateintrightPeo;
privateintleftSavage;
privateintrightSavage;
privateintCURR_STATE=0;
privateintonBoatPeoNum=0;
privateintonBoatSavageNum=0;
privatefinalintSTATE_BOAT_LEFT=0;
privatefinalintSTATE_BOAT_RIGHT=1;
publicNode(intleftPeo,intleftSavage,intrightPeo,intrightSavage,intstate,ListcheckSumList,intonBoatPeoNum,intonBoatSavageNum){
this.CURR_STATE=state;
this.leftPeo=leftPeo;
this.leftSavage=leftSavage;
this.rightPeo=rightPeo;
this.rightSavage=rightSavage;
this.nodesCheckSum.addAll(checkSumList);
this.onBoatPeoNum=onBoatPeoNum;
this.onBoatSavageNum=onBoatSavageNum;
}
publicintgetLeftPeo(){
returnleftPeo;
}
publicvoidsetLeftPeo(intleftPeo){
this.leftPeo=leftPeo;
}
publicintgetRightPeo(){
returnrightPeo;
}
publicvoidsetRightPeo(intrightPeo){
this.rightPeo=rightPeo;
}
publicintgetLeftSavage(){
returnleftSavage;
}
publicvoidsetLeftSavage(intleftSavage){
this.leftSavage=leftSavage;
}
publicintgetRightSavage(){
returnrightSavage;
}
publicvoidsetRightSavage(intrightSavage){
this.rightSavage=rightSavage;
}
@Override
publicStringtoString(){
returnleftPeo+","+leftSavage+","+rightPeo+","+rightSavage+","+CURR_STATE;
}
publicintgetCURR_STATE(){
returnCURR_STATE;
}
publicvoidsetCURR_STATE(intcURR_STATE){
CURR_STATE=cURR_STATE;
}
publicintgetStateBoatLeft(){
returnSTATE_BOAT_LEFT;
}
publicintgetStateBoatRight(){
returnSTATE_BOAT_RIGHT;
}
publicintcalcCheckSum(){
return1*getCURR_STATE()+10*getLeftPeo()+100*getLeftSavage()+1000*getRightPeo()+10000*getRightSavage();
}
publicvoidaddCheckSum(){
intcheckSum=calcCheckSum();
nodesCheckSum.add(checkSum);
}
publicbooleanhasVisited(){
intsum=calcCheckSum();
for(IntegercheckSum:nodesCheckSum){
if(checkSum==sum)returntrue;
}
returnfalse;
}
publicList<Integer>getNodesCheckSum(){
returnnodesCheckSum;
}
publicintgetOnBoatPeoNum(){
returnonBoatPeoNum;
}
publicvoidsetOnBoatPeoNum(intonBoatPeoNum){
this.onBoatPeoNum=onBoatPeoNum;
}
publicintgetOnBoatSavageNum(){
returnonBoatSavageNum;
}
publicvoidsetOnBoatSavageNum(intonBoatSavageNum){
this.onBoatSavageNum=onBoatSavageNum;
}
}