浏览 1913 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-26
最后修改:2010-10-07
小更新,补充了main.cpp中的注释,源码重新打包上传了 ===================== 很老套,又是连连看哈⊙﹏⊙b汗! 我之前有写过一个连连看算法分析的博客,并用JAVA实现了:http://hexlee.iteye.com/blog/455257 这次因为有需要,重新又接触到了C++,故抱着学习C++的心态,用C++重新实现了这个算法,结果收获还是挺丰盛的:1.发现原来算法实现上的一个数组越界的BUG 2.判断可穿越条件的实现:JAVA中使用了一个接口,C++中使用了一个函数指针 3.学习了C++中的模板的使用 附件有代码打包,C++新手,代码有什么问题,欢迎指出,感激不尽。 文件说明: Array2D.h //一个二维数组类的简单实现 Position.h //对应JAVA版中的Point,用来记录2D位置的类 LLKPathFinder.h //LLK算法实现器 main.cpp //测试 编译工具:Eclipse for c/c++ 下面贴上关键代码: template<class T> void llk::LLKPathFinder<T>::find(Position p1, Position p2) { cout << "Finding road!" << endl; clearStack(pathNodes);//清空 pathNodes.push(p1); while (true) { canConnect = _sameLineCheck(p1, p2, *array);//在同一条线上 if (canConnect) break; canConnect = _oneCornerCheck(p1, p2, *array);//有一个拐角 if (canConnect) break; canConnect = _towCornerCheck(p1, p2, *array);//有两个拐角 break; } if (canConnect) { pathNodes.push(p2); printStack(pathNodes); } return; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |