锁定老帖子 主题:三只大老虎和三只小老虎过河
精华帖 (6) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-13
感觉像操作系统的东西。
印象中可以使用图算法中的有向图、最小二分图覆盖等等。 |
|
返回顶楼 | |
发表时间:2009-01-14
我玩这个flash游戏,好像是僵尸和人的
|
|
返回顶楼 | |
发表时间:2009-01-14
盲目搜索就够了
|
|
返回顶楼 | |
发表时间:2009-01-14
看不太懂,能加上点注释就好了。
|
|
返回顶楼 | |
发表时间:2009-01-14
呀,这不是狼和羊过河的那个吗~挺有意思,回去自己也写个算法试试~
|
|
返回顶楼 | |
发表时间:2009-01-14
这个网上有个flash游戏的 。。。 当时觉得好难 多玩几次就过了
|
|
返回顶楼 | |
发表时间:2009-01-15
以前做的题目,好象是3只小老虎都不会划船啊.
|
|
返回顶楼 | |
发表时间:2009-01-15
最后修改:2009-01-15
呵呵,楼主很会玩哦~
|
|
返回顶楼 | |
发表时间:2009-01-15
最后修改:2009-01-17
qianjigui 写道 感觉像操作系统的东西。
印象中可以使用图算法中的有向图、最小二分图覆盖等等。 图是比较好的思路 先解析所有的状态 如ABCabc| , BCbc|Aa , ...... ,|ABCabc 从ABCabc| -> 中间状态 ->....->|ABCabc 这就变成了找到可行路径,最小路径的问题了 不过反正都是从开始找起,一边搜一边找孩子也一样了, jjcang 写道 盲目搜索就够了。
注意不要走进 x->y->z->x.....-z-x->y->z....这样的循环 public class Status { String status; List<Status> children; Status(String s){ status = s; } public void getAllChildrenStatus(){ //解析status字符串,找到其所有下一步 //放入到children队列中 ....... } public eques(){...} public hashcode(){...} } public class StatusManager{ private Status startStatus; private Status endStatus; StatusManager(Status start,Status end){ startStatus = start; endStatus = end; } // 记录当前所走过的路径,避免重复 // 如 A->B->C->....A->B->C->A // 每一种状态最多只出现一次 private static List moveRecord<Status> = new ArrayList(); //判断当前状态是否已经走过 public boolean RecordHave(Status s){...} public void StatusSearch(){ StatusSearch(startStatus); } public void StatusSearch(Status currentNode){ moveRecord.add(curstatus); currentNodegetAllChildrenStatus(); //遍历所有孩子 for(Status s : currentNode.children){ // 如果孩子已经在moveRecord中,那么我们之前走到过这一步 // 如果和endNode相等,则为所求路径,打印 :) // 递归 if(!RecordHave(s)){ if(s.equals(endNode){ // print all value in current list; // 找到所有的路径,这可能只是其中一种 ........ continue; } StatusSearch(s); } } //回到上一步 moveRecord.remove(moveRecord.size()); } } |
|
返回顶楼 | |
发表时间:2009-01-16
先过一对子不会划船的母子;
再过剩下两只大老虎; 最后过剩下两只小老虎。 |
|
返回顶楼 | |