
算法学习记录
PlumYu
这个作者很懒,什么都没留下…
展开
-
八皇后问题
一个如下的 8 x 8 的跳棋棋盘,有八个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。输出其满足条件的所有的结果。 代码如下: #include<iostream> using namespace std; int n; int line[8]; // 记录每一行,那个皇后被位置占领了 bool list[8], rz[20], rf[20]; // 列 , rz代表正对角线, rf代表反对角线 void dfs(int li原创 2022-04-15 21:19:52 · 255 阅读 · 0 评论 -
最长公共子序列(入门)
对于给出一个整形的数列求出其子序列的序列之和最大。 其最最最最最简单的方法就是暴力,对于暴力而言我们只需要对前 n 个元素进行不断的求和不断的进行更新比较,但是其时间复杂度可想而知,计算时间复杂度可以粗略的看成一个排列组合,但是对于题目而言不能出现 0 的情况,所以时间复杂度大致为 。对于题目所给的时间限制要求显然是不合理的。 对于这种情况,应该能想到之前的状态转移ji ...原创 2022-04-01 21:47:40 · 139 阅读 · 0 评论 -
动态规划-数字三角形求最大和
7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 上面的代码块表示一个5行的数字三角形。假设给定一个n行数字三角形,计算出从三角形顶至底的一条路径,使该路径经过的数字总和最大。 每一步只能由当前位置向下或向右下。 对于刚刚学习动态规划的我这题的第一反应就是搜索,然后抱着试一下的心态就进行搜索了一下,代码如下: #include<bits/stdc++.h> using namespace std; int ans = 0, sum = 0, a[101][101], n ..原创 2022-03-31 20:28:41 · 1062 阅读 · 0 评论