写个过河算法
2007-03-15 21:55:34 来源:WEB开发网就是要这样从1走到20的样子,其实都在CArray<Move, Move> m_MoveAll;里面了
数组里记录了1-》2,2-》4,2-》8,8-》19,7-》100什么的我们要从1找到到20的路并且记录下结点
怎么搞~,我不会,(啪,又一个鸡蛋飞了过来。靠~还来,你等我说完呀,我可以很负责任告诉你,大健很生气,后果很严重)。
开始我也不记得怎么搞了,突然一个声音从天上传过来:你要脑袋干什么,你要那么多书干什么。
我一下厕所顿开,回家翻书……才看了一点,我想到了,我可以来个深度编历。从1开始找找到20就可以了。过程中记得要压栈和出栈。主要函数GORIVER,用一个CArray<int, int> Road模拟栈。void CRiverDlg::GoRiver(CArray<int,int>& p_Road, int Begin, int End, CArray<Move, Move>& p_MoveAll, BOOL *Visited)
看懂了吗?不懂~哈哈~回去看书把深度编历。现在知道后果很严重了吧。看死你。详细看看源代码吧。
{
//深度遍历图形算法
//此步不需要因为从设置了结束位以后就再也没调用GORIVER了
//if(m_bEndFlag) return;
int i;
Visited[Begin] = TRUE;
//讲其加入到走过的路中
p_Road.Add(Begin);
if(Begin == End)
{
m_bEndFlag = TRUE;
MessageBox("找到了从起点通往终点道路");
return;
}
for(i=0; i<p_MoveAll.GetSize(); i++)
{
if(p_MoveAll.GetAt(i).m_nNow == Begin)
{
if(Visited[p_MoveAll.GetAt(i).m_nNext] == FALSE)
{
GoRiver(p_Road,
p_MoveAll.GetAt(i).m_nNext,
End,
p_MoveAll,
Visited);
if(m_bEndFlag) return;
}
}
}
//如果遍历完了还没找到说明此路不通出栈
p_Road.RemoveAt(p_Road.GetSize()-1);
}
题外
第2天MM还在玩这个游戏,还在叫到:昨天我才走过去了,今天走又不行了。我奸笑一声扑了过去,对不起,说错了应该是走了过去,寒一个~先叫MM随便走,MM走了N步以后,说实在想不到了,我说好我来,你走到任一步我都能帮你走到幸福的终点,因为你遇见了我了。然后我点开程序,GOGOGO,出来了,照着走哈哈~。搞定。MM很崇拜的看着我,说到:你真行。我眼睛红红的说,那是。其实心里寒了一把(昨天晚上熬了N长时间,就为了你这么一笑,不过有种东西叫成就感,我想你曾经体会到或者现在体会到过或者以后将会体会到)
题外的题外
我不想全写苦力式的业务了,才毕业时的激情都给搞没了。哪位大侠介绍份有前途又有钱途的编程职业给我,我253各位了。我很有潜力的。(哧~哧~哈哈,这次的番茄被我接到了,恩吃一口味道还不错,还有鸡蛋没)EMAIL:LWKL2008@YAHOO.COM.CN
- ››算法大全(3) 二叉树
- ››算法
- ››算法从哪学起
更多精彩
赞助商链接