码迷,mamicode.com
首页 > 编程语言 > 详细

常见算法代码模板

时间:2019-10-09 19:21:31      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:max   else   ssi   tor   param   gen   bre   ++i   append   

递归

def recursion(level, param1, param2,...):
    # recursion terminator
    if level > MAX_LEVEL:
        return
    
    # process login in current level
    process_data(level, data,...)
    
    # drill down
    self.recursion(level + 1, p1, ...)
    
    # reverse the current level status if needed
    reverse_state(level)

广度优先搜索

visited = set()
def dfs(node, visited):
    visited.add(node)
    
    # process current node here.
    
    for next_node in node.children():
        if not next_node in visited:
            dfs(next_node, visited)

深度优先搜索

def bfs(graph, start, end):
    queue = []
    queue.append([start])
    visited.add(start)
    
    while queue:
        node = queue.pop()
        visited.add(node)
        
        process(node)
        
        nodes = generate_related_nodes(node)
        queue.push(nodes)
        
    # other processing work

二分

left, right = 0, len(array) - 1
while left < right:
    mid = left + (right - left) /2
    if array[mid] == target:
        # find the target
        break or return result
    elif array[mid] < target:
        left = mid + 1
    else:
        right = mid -1

动态推导(DP)

# 状态定义
dp = new int[m+1][n-1]

# 初始状态
dp[0][0] = x
dp[0][1] = y

# DP状态推导
for i = 0; i <=n; ++i {
    for j = 0; j <=m; ++j {
        ....
        dp[i][j] = min { dp[i-1][j],dp[i][j-1], etc..}
    }  
}
# 最优先
return dp[m][n]

常见算法代码模板

标签:max   else   ssi   tor   param   gen   bre   ++i   append   

原文地址:https://www.cnblogs.com/yeni/p/11643505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!