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;
}
}