算法
文章平均质量分 54
gdizcm
反应比较慢
展开
-
全排列理解
它们的全排列为2 3 4、2 4 3、3 2 4、3 4 2、4 2 3、4 3 2 六组数。即为以2开头的3,4的全排列,以3开头的2,4的全排列,以4开头的2,3的全排列。然后看最后两个数3,4,它们的全排列为3 4和4 3,即以3开头的4的全排列和以4开头的3的全排列。把打头的元素固定下来,剩下的就是n-1个元素进行递归。以此类推n个不同元素的全排列即为这n个元素分别打头,后跟其余n-1个元素的全排列;把选中的数据放前面,没选中的放后面,这样可以不用单独创建待选列表,可以减少开销。原创 2023-12-18 19:47:56 · 449 阅读 · 0 评论 -
八皇后问题复习
八皇后问题是回溯算法的经典题目,今天把它记录下来,以后看起来方便。不理解的时候觉得很复杂,理解之后又觉得不复杂了。 C++11 #include <iostream> #include <stdlib.h> using namespace std; const int EIGHT = 8; static int count = 0; void Queen(int queen[], int rowLeft) { if (0 == rowLeft)//放置完成,计数加原创 2020-07-26 20:04:16 · 99 阅读 · 0 评论 -
C++单链表检测是否有环详解
1. 判断单链表是否有环。 2. 如果单链表有环,判断环长,入口点位置。 3. 判断链表长度。 这个问题网上有很多种解法,其中一种是快慢指针法。定义快慢两个指针,快指针一次移动两个节点,慢指针一次移动一个节点,从表头开始遍历链表。如果有环,快慢指针会在环中相遇,然后停止遍历。如果没有环,快慢指针会遍历到链表结尾的空节点,然后停止遍历。 ...原创 2020-03-24 20:46:23 · 962 阅读 · 0 评论 -
01背包问题
/* 有num件物品和一个容量为P_SIZE的背包。第i件物品的重量是weight[i],价值是value[i]。 求解将哪些物品装入背包可使价值总和最大。 特点:每种物品仅有一件,可以选择放或不放。 f[i][P_SIZE] = max(f[i-1][j], f[i-1][j-weight[i]] + value[i]); 方程之中,现在需要放置的是第i件物品,这件物品的体积是weight[转载 2017-01-09 17:39:39 · 391 阅读 · 0 评论