- UID
- 2198
注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主
该用户从未签到
|
楼主 |
发表于 2009-8-30 22:33:31
|
显示全部楼层
其实把代码写成这样根本就没有意义 就跟那个汉诺塔一样
#include <iostream>
using namespace std;
void mov(int n,char a,char b,char c)
{
if(n==0)return;
mov(n-1,a,c,b);
cout<<a<<"-->"<<c<<endl;
mov(n-1,b,a,c);
}
int main(int argc, char* argv[])
{
mov(3,'a','b','c');
return 0;
}
告诉别人汉诺塔这样写 其实没啥意义
bool Find(int nFirst,int nEnd,int nFind)
{
if(nFirst == nEnd) return test[nFirst]==nFind?1:0;
if(test[nFirst]==nFind || test[nEnd]==nFind) return true; // 这里属于优化代码 省略
int nLeft=(nFirst+nEnd)/2;
if(test[nLeft]>=nFind) // 将一下两组if指令用老师教的&&来等价替换
if(Find(nFirst,nLeft,nFind))
return true;
if(test[nLeft+1]<=nFind)
if(Find(nLeft+1,nEnd,nFind))
return true;
return false;
}
重要是递归的思想、本质 和 递归的建模你是否搞明白了 这才是核心 |
|