算法设计与分析

穷举法

回溯法BackTracking:粉笔和绳子 DFS

DFS深度优先搜索 实现

//伪代码
procedure explore(G,v)  //G图,v顶点
visited[v] = true   //visited 就是粉笔
for each edge(v,u) in E:
	if not visited[u]:
		explore(G,u) //递归 -> 栈FILO(绳索)

procedure dfs(G) //初始化
for all v in V:
	visited[v] = false
for all v in V:
	visited[v] = false
for all v in V:
	if not visited[v]:
		explore(G,v)
//算法
//C[][]是图的邻接矩阵,visited[i]表示顶点i是否被访问过
for(i = 0;i <=n-1;i++){
   
    visited[i] = 0;
}
DFSk(Graph g,int k) //对图g的顶点K进行深度遍历
{
   
    visited[k] = 1;
    visit k; //自定义visit函数
    for(i = 0; i<= n-1;i++){
   
        if(g.c[k][i] ==1 && visited[i] == 0) DFSk(g,i);
    }
}
DFS(Graph g) //考虑g的连通性
{
   
    for(int i = 0; i<=n-1;i++){
   
        if(visited[i] ==0) DFSk(g,i);
    }
}

0-1背包问题 / 普通背包问题

//回溯法算法框架
void backtr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值