![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔试算法之路
l龙猫先生l
这个作者很懒,什么都没留下…
展开
-
笔试算法之路(C/C++):输出左右“对称”序列
1、题目描述输入区间 [1, 9] 上的一个整数 n,输出满足条件的所有序列及其个数,条件如下: (1)每个序列都有 2n 位,每位上可填数字 0 或 1; (2)每个序列的前 n 位和后 n 位包含 1 或 0 的个数相同,即“对称”,但并不要求位置一定对应。示例1:输入:1 输出: 00 11 满足条件的序列个数:2示例2:输入:2 输出: 0000 01...原创 2018-08-31 12:17:12 · 1328 阅读 · 0 评论 -
回溯法(1)
题目:程序:#include <iostream>#include <vector>using namespace std;void findTreasureCore(size_t row, size_t column, vector<vector<int>> &grid, vector<vector<int...原创 2019-09-17 16:45:13 · 201 阅读 · 0 评论 -
要在H小时内检查完所有的产品,求K的最小值
要在H小时内检查完所有的产品,求K的最小值题意有N堆产品,每堆产品的数量为counts[i],1<=N<=10^4, 0<=i<N, 1=<counts[i]<=10^9;现给定H个小时来检测所有产品的质量,每小时可以检查K个产品,N<=H<=10^9;全部检查完一堆产品后才能检查另一堆;如果一堆产品的总数量或者剩余数量小于K,那么检查这些...原创 2019-08-19 22:33:10 · 234 阅读 · 0 评论 -
交换数位后的最大值
交换数位后的最大值题意:输入一个非负整数num,0<=num<=10^8,可以交换num任意两个数位上的数字,但是最多只能发生一次交换,求通过交换可以得到的最大值。示例:输入:2736输出:7236解释:将2736中的数字2和7交换,得到7236C++实现:#include <iostream>#include <vector>#incl...原创 2019-08-19 21:17:49 · 912 阅读 · 0 评论 -
(2)动态规划:01背包、完全背包、多重背包,源代码由C++实现
文章目录1. 01背包问题1.1 问题描述与算法分析1.2 核心代码1.3 测试代码1.4 示例输入输出2. 完全背包问题2.1 问题描述与算法分析2.2 核心代码2.3 测试代码2.4 示例输入输出3. 多重背包问题3.1 问题描述与算法分析3.2 核心代码3.3 测试代码3.4 示例输入输出背包问题是动态规划算法的一个典型实例。1. 01背包问题1.1 问题描述与算法分析01背包问题描...原创 2019-08-09 21:42:36 · 951 阅读 · 0 评论 -
(1)动态规划
题目描述给定一个长度为n的数字序列,对于每一个1<=k<=n,希望能求解出所有长度为k的连续子序列的最大值中的最小值。输入描述:第一行数字n接下来一行是一个长度为n的数字序列1<=n<=100000, 0<=ai<=10^5输出描述:一行n个数字,第i个数字表示k=i时的答案。示例1:输入61 3 2 4 6 5输出1 3 3 4 6 ...原创 2019-08-06 21:41:29 · 349 阅读 · 0 评论 -
记一道有趣的笔试题,递归+动态规划
题意求:n个人排名,允许并列名次,共有多少种排名结果?例如:a和b排名,有3种:a>bb>aa=b和b=a算一种我以前碰到过一个类似的问题:有个前提,忽略司机和乘务员。有n个人坐车,每辆车可以坐1~n个人,要求所有人都能上车,且所有车都必须上人,车足够,问有多少种乘车方法?这两个问题真是如出一辙。解析1:递归假设n个人,排出了m个名次,有f(n,m)种结果(1&l...原创 2019-07-20 19:43:38 · 790 阅读 · 1 评论 -
笔试回顾:一道有趣的算法题
题意:有这样一个数组A,长度为n,相邻元素的绝对值都为1,例如A={1、2、3、4、3、4、5、6、5、4、3、4、5},现给定数字a,设计算法求a在A中的位置。解法:数组第一个数为array[0], 要找的数为y,设t = abs(y - array[0])。由于每个相邻的数字之差的绝对值为1。故第t个位置之前的数肯定都比y小。因此直接定位到array[t],重新计算t,t = abs(y...原创 2019-06-29 21:20:53 · 262 阅读 · 0 评论 -
几种经典的排序算法
1. 算法概述1.1. 算法分类几种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。1.2 算法复杂度1.3 相关概念稳定:如果a原本在b前面,而a=b...原创 2019-06-27 20:10:44 · 268 阅读 · 0 评论 -
长度至少为m的最小连续子序和
题意:有一个长度为 n 的整数序列,它的子序列满足两个条件:(1)该子序列长度至少为 m;(2) 该子序列是连续的。找到这些子序列中元素之和最小的那个子序列,输出该子序列的元素之和。代码:#include <iostream>#include <vector>#include <algorithm>using namespace std;int...原创 2019-09-20 16:53:40 · 693 阅读 · 1 评论