算法
文章平均质量分 56
程序吟游
这个作者很懒,什么都没留下…
展开
-
常见算法的时间复杂度概述
根据代码判断算法的时间复杂度。以下面代码为例,执行次数函数为:m+n+m*n ,则时间复杂度为O(m*n)原创 2024-04-22 14:44:00 · 230 阅读 · 0 评论 -
回溯法:n-皇后问题
从第一个皇后开始,对每个皇后,从其对应行(第i个皇后对应第i行)的第一列开始尝试放置,若可以放置,确定该位置,考虑下一个皇后;n-皇后问题是在n行n列的棋盘上放置n个皇后,使得皇后彼此之间不受攻击,其规则是任意两个皇后不在同一行、同一列和相同的对角线上。|| fabs(i-k) — fabs(pos[i] - pos[k])){ //同一列不能有多个皇后。pos:一维数组,pos[i]表示第i个皇后放置在第i行的列位置。/*判断第 k个皇后目前放置位置是否与前面的皇后冲突*//*尝试摆放第i个皇后*/原创 2024-04-19 17:06:21 · 521 阅读 · 0 评论 -
分治法:假币问题
(2)当n为奇数时,将前后两部分,即1~(n-1)/2和(n+1)/2+1~n,放在天平的两端,较轻的一端里有假币,继续在较轻的这部分硬币中用同样的方法找出假币;若两端重量相等,则中间的硬币,即第(n+1)/2枚硬币是假币。(1)当n为偶数时,将前后两部分,即1~n/2和n/2+1~0,放在天平的两端,较轻的一端里有假币,继续在较轻的这部分硬币中用同样的方法找出假币。假币问题:有n枚硬币,其中有一枚是假币,已知假币的重量较轻。first,last://当前考虑的硬币数组中的第一个和最后一个下标。原创 2024-04-18 16:08:15 · 595 阅读 · 0 评论 -
算法问题的四种常用策略
分治法是一种递归策略,它将一个复杂的问题分解为两个或更多个相同或相似的子问题,然后递归地解决这些子问题,最后将子问题的解合并得到原问题的解。选择哪种策略取决于问题的性质和你希望得到的解的类型(全局最优解、所有解等)。每种策略都有其适用的场景和限制,理解它们的特性和优缺点是有效解决问题的关键。动态规划也是一种分治策略,但它试图解决分治法中可能存在的子问题重叠的问题。分治法、动态规划、贪心算法和回溯法是解决算法问题的四种常见策略。:八皇后问题、图的着色问题、旅行商问题。:需要更多的空间来存储子问题的解。原创 2024-03-01 15:17:05 · 289 阅读 · 0 评论