深搜
优点
1、能找出所有解决方案
2、优先搜索一棵子树,然后是另一棵,所以和广搜对比,有着内存需要相对较少的优点
缺点
1、要多次遍历,搜索所有可能路径,标识做了之后还要取消。
2、在深度很大的情况下效率不高
void DFS() //N代表目前DFS的深度
{
if(找到解) //进行相应的操作
{
…
return;
}
for(inti=0;i<4;i++) //枚举四个方向
{
DFS(N+1); //进入下层递归
}
}
一般情况下,套用上述公式即可。(枚举四个方向只是举个例子,算符种数有任意种可能)
好了,不知大家明白没有,来道例题试试吧!
例题1
输入任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和,请输出每种拆分方法和方法总数。
样例输入
7
样例输出
7=1+1+1+1+1+1+1
7=1+1+1+1+1+2
7