
算法
文章平均质量分 53
时光丨荏苒
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
整数拆分问题
可重复给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。来源:力扣(LeetCode)链接:https://leetcode-cn.co原创 2022-02-14 17:01:56 · 258 阅读 · 0 评论 -
栈的出栈序列校验
效果图正确错误代码块#include <iostream>#include <stack>#include <queue>#include <vector>#include <algorithm>using namespace std;bool checkIsValidOrder(stack<int> &in, queue<int> &out){ int n = out.siz原创 2020-12-14 22:55:58 · 226 阅读 · 0 评论 -
二叉树的序列转化(前中转后层,后中转前层)
前序中序转后序和层次序列后序中序转前序和层次序列具体代码#include &lt;iostream&gt;#include &lt;stdio.h&gt;#include &lt;vector&gt;#include &lt;queue&gt;using namespace std;vector&lt;int&gt; pre, i原创 2019-03-06 20:35:12 · 463 阅读 · 0 评论 -
图的深搜和广搜
演示代码#include <iostream>#include <stdio.h>#include <vector>#include <queue>#include <algorithm>using namespace std;int e[50][50];bool visit[50];int nodeNum, roa...原创 2019-03-10 15:29:45 · 417 阅读 · 0 评论 -
并查集经典应用场景
例1、家庭财产问题题目描述给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。输入格式:输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产:编号 父 母 k 孩子1 … 孩子k 房产套数 总面积其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1...原创 2019-03-10 16:23:23 · 2165 阅读 · 0 评论 -
堆排序
算法思想将待排序的序列构成一个大顶堆(或小顶堆)此时,整个序列的最大值就是堆顶的根节点。将它移走(就是将其与堆数组的末尾元素交换,此时末尾元素就是最大值)然后将剩余的n-1个序列重新构造成一个堆,这样就会得到n个元素的最大最大值代码实现void HeapAdjust(int k[], int s, int n){ int i, temp; temp = k[s]; //存储第一个...原创 2019-08-24 23:45:09 · 140 阅读 · 0 评论 -
归并排序
算法思想利用归并的思想实现的排序方法。它的原理是假设初始序列有n个记录,则可以看成n个有序的子序列,每个子序列的长度为1,然后两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,这种排序方法称为2路归并排序。代码实现(递归式)void merging(int *list1, int list1_size, int *list2, int list2_size) { int i, ...原创 2019-08-25 09:53:28 · 147 阅读 · 0 评论 -
快速排序
算法思想快速排序之所比较快,因为相比冒泡排序,每次交换是跳跃式的。每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了。代码实现int Partition(int k[], int low, int high) { int point;...原创 2019-08-25 10:20:20 · 123 阅读 · 0 评论 -
归并排序
递归实现#include <iostream>#include <stdio.h>const int maxn = 100;int a[maxn];void merge(int a[], int l1, int r1, int r1, int r2){ int i = l1, j = l2; int temp[maxn], index = 0; while...转载 2019-02-26 19:29:46 · 112 阅读 · 0 评论 -
进制转换
将p进制数x转换为十进制数y#include <stdio.h>#include <iostream>#include <math.h>using namespace std;int main(){ int x, p; int y = 0, index = 0; cin >> x >> p; while(x != 0)...原创 2019-02-26 15:01:34 · 124 阅读 · 0 评论 -
二分
#include &lt;stdio.h&gt;//A[]为严格递增序列,left为二分下界,right为二分上界,x为欲查询的数//二分区间为左闭右闭得[left, right],传入的初值为[0,1]int binarySearch(int A[], int left, int right, int x) { int mid; while(left &lt;= right){ m...转载 2019-03-01 16:30:50 · 127 阅读 · 0 评论 -
递归解决字符串的枚举问题
问题描述有一种特殊的二进制密码锁,由n个相连的按钮组成(n&amp;amp;amp;amp;lt;30),按钮有凹/凸两种状态,用手按按钮会改变其状态。然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。输入两行,给出两个由0、1组成的...原创 2019-02-01 21:49:45 · 318 阅读 · 0 评论 -
PAT甲级1154
1154 Vertex Coloring (25 分)A proper vertex coloring is a labeling of the graph’s vertices with colors such that no two vertices sharing the same edge have the same color. A coloring using at most k c...原创 2019-01-30 14:23:21 · 155 阅读 · 0 评论 -
PAT甲级1153
1153 Decode Registration Card of PAT (25 分)A registration card number of PAT consists of 4 parts:the 1st letter represents the test level, namely, T for the top level, A for advance and B for basic;...原创 2019-01-30 18:08:58 · 407 阅读 · 0 评论 -
日期的算法格式化
问题描述小明在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月年的。更麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在有很多的可能的日期月其对应。比如02/03/04,可能是2002年03月04日、2004年02月03日或...原创 2019-01-30 20:13:44 · 272 阅读 · 0 评论 -
递归实现放小球(整数划分)问题
问题描述n个相同的小球,放入m个相同的盒子里,允许有空盒,问有多少种不同的方法?解题思路f(i,k) 表示把 i 个相同的小球放入 k 个相同的盒子中且允许有空盒的放法数。(1) 把 i 个小球放入到 k 个盒子中,如果盒子数 k 比小球数i还要多,那么一定有空的盒子,这时只考虑 i 个盒子即可。(2) 若盒子数不超过小球数,则对方法进行分类,分成两类:有盒子为空的放法和没盒子为空的...原创 2019-02-22 20:57:20 · 2322 阅读 · 0 评论 -
动态规划经典例题
一、 01背包问题#include &amp;amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;amp;amp;lt;vector&amp;amp;amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;amp;amp;lt;string&amp;amp;原创 2019-02-22 22:27:47 · 777 阅读 · 0 评论 -
深搜与方格三个例题
一、剪邮票问题题目描述解题思路把12选5的各种选法排列出来,并判断是不是5格连着。判断方法:把所有的红格子设为1,其它设置为0,在红格子中随便选一个(后面代码具体实现,用的都是最后一个红格子,这无所谓),从这个格子出发,按照它的周围4个方向尝试一遍,一个格子被走过立即设置为0,看走完后是不是走了5个。代码#include &amp;amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;amp;gt;#includ原创 2019-02-23 12:13:50 · 256 阅读 · 0 评论 -
PAT甲级1155
1155 Heap Paths (30 分)In computer science, a heap is a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either grea...原创 2018-12-20 13:16:34 · 304 阅读 · 0 评论