如题,这是一篇读书报告》.《

首先,我了解到深搜和广搜两种算法,有什么不同之处呢?

深搜

从某条路一直走到底撞到边界条件再回头,尝试其他可能

有道题目:

P1036

通过深搜实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <bits/stdc++.h>

using namespace std;
int a[10001];
int n,k,sum,total;
inline void print()
{
printf("%d",total);
}
inline bool prime(int x)
{
for(register int i=2; i<=sqrt(x); i++)
if(x%i==0)
return false;
return true;
}
inline void dfs(int step,int sum,int cnt)
{
if(step==n+1||cnt==k)
{
if(prime(sum) && cnt==k)
total++;
return;
}
dfs(step+1,sum+a[step],cnt+1);
dfs(step+1,sum,cnt);
return;
}
int main()
{
scanf("%d %d",&n,&k);
for(register int i=1; i<=n; i++)
scanf("%d",&a[i]);
dfs(1,0,0);
print();
return 0;
}

上题中即使用了深搜
总结:深搜重要之处在于边界条件 十分重要~~!!!

不然会死循环或者浪费时间等一大堆事

广搜:层层递进

对<(^-^)>特点就是层层递进

在走迷宫这道题目中 广搜就像这样↓

读书报告《啊哈!算法!》第4章

层层递进

读书报告《啊哈!算法!》第4章

使用两个坐标的队列以及一个step的队列记录,同时在每个节点进行扩展

总结:好好利用搜索可以解决很多循环无法解决的问题,但边界条件要设置好,以及每次调用函数时的数据要对应。

相关文章:

  • 2021-06-26
  • 2021-05-22
  • 2022-12-23
  • 2021-06-24
  • 2021-10-01
  • 2021-07-11
  • 2022-12-23
猜你喜欢
  • 2021-09-10
  • 2021-06-26
  • 2021-07-12
  • 2022-02-11
  • 2021-04-13
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案