作业介绍
回溯算法是对树形或者图形结构执行一次深度优先遍历,实际上类似枚举的搜索尝试过程,在遍历的过程中寻找问题的解。
深度优先遍历有个特点:当发现已不满足求解条件时,就返回,尝试别的路径。此时对象类型变量就需要重置成为和之前一样,称为「状态重置」。
许多复杂的,规模较大的问题都可以使用回溯法,有「通用解题方法」的美称。实际上,回溯算法就是暴力搜索算法,它是早期的人工智能里使用的算法,借助计算机强大的计算能力帮助我们找到问题的解。
深度优先搜索算法的代码框架:
ans;
void dfs(层数,其他参数)
{
//递归边界
if(边界判断)
{
更新答案;
return;
}
//尝试所有的可能性
for(枚举下一层可能的情况)
{
if(vis[i]==0)//如果状态i没有用过,就可以进入下一层
{
vis[i]=1;//标记状态i,表示已经用过,在下一层及之后不再使用
dfs(层数+1,其他参数);
vis[i]=0;//恢复状态i,回溯时不影响下一层及之后的使用
}
}
return;
}
题目
认领作业后才可以查看作业内容。
- 状态
- 正在进行…
- 题目
- 10
- 开始时间
- 2025-1-9 0:00
- 截止时间
- 3333-5-1 23:59
- 可延期
- 24 小时