![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 60
jit-hakase
这个作者很懒,什么都没留下…
展开
-
DFS与回溯法
DFS与回溯法DFS排列数问题: 生成1~n的排列 思路: 穷举所有可能 在生成结果数组前把重复的去掉 python codeA = [None for i in range(10)] N = 3def dfs(cur): if cur == N: print(A[:N]) else: for i in range(1, N+1):原创 2016-12-10 10:05:42 · 6569 阅读 · 0 评论 -
分治
分治算法二分查找问题: 在有序的序列中找数, 找到返回下标, 找不到返回-1. 思路:跟中间数进行比较, 每次序列减半再递归查找. python codedef part_find(A, n, start_idx): if not A: return -1 mid = len(A)//2 if A[mid] == n: return mid+s原创 2016-12-10 10:18:00 · 222 阅读 · 0 评论 -
BFS和状态生成树
BFS和状态生成树走迷宫的最短路径问题: 给出一个起点和终点, 求起点走到终点的最短距离. 思路: 穷举所有可能, 按步数递增依次搜寻. 起点(0,0) 终点(4,4) 1为墙(不可走) python codefrom queue import QueueM = [ [0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 1, 1, 1, 0],原创 2016-12-10 10:10:50 · 1331 阅读 · 0 评论 -
博弈论
博弈论奇异局势: 面对此局势, 不管做出任何动作, 都将输掉最终比赛.巴什博奕(Bash Game)问题:一堆n个物品, 两个人轮流从这堆中取物品, 规定每次至少取一个, 最多取m个, 最后取光者胜, 先取如何必胜?(n>m+1) 思路:当n%(m+1)==0时为奇异局势, 第一次通过取n%(m+1)个到达奇异局势, 接下来对手取x个, 取m+1-x个继续达到奇异局势, 重复此步骤. 判断能否取胜原创 2016-12-10 10:15:21 · 397 阅读 · 0 评论 -
图论
图论使用邻接表和邻接矩阵中的邻接矩阵描述图的遍历图例如下, 0为起点. 0 / \ 1 2 \ / \ 3 4深度优先搜索(DFS)python codeN = 5G = [ [ 0, 1, 1, 0, 0 ], [ 1, 0, 0, 1, 0 ], [ 1, 0, 0, 1, 1 ], [ 0, 1, 1, 0, 0原创 2016-12-15 11:19:18 · 339 阅读 · 0 评论 -
贪心算法
贪心算法最大购买问题:有N元钱, 有三种商品, 价格分别为150元, 200元, 350元, 在最大购买下最少能剩下多少钱. 思路:350=150+200, 排除此商品, 全购买150元的商品, 如果还有余钱, 把150元的商品换成200元. python codeN = 580 cnt = N//150 sum = N%150while sum>=50 and cnt>0: sum -原创 2016-12-15 14:37:23 · 382 阅读 · 0 评论 -
动态规划
动态规划最大连续子序列和从O(N^3)到O(N) 问题: 给定一个序列, 求出最大连续的子序列和.穷举算法 O(N^3)python codeL = [-2, 11, -4, 13, -5, -2] N = len(L) max_sum = L[0]for begin in range(N): for end in range(begin, N): sum = 0原创 2016-12-15 14:39:57 · 427 阅读 · 0 评论