自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 问答 (2)
  • 收藏
  • 关注

原创 并查集(Disjoint_set)

/*一般来说,一个并查集对应三个操作:1、初始化( Init()函数 )2、查找函数( Find()函数 )3、合并集合函数( Join()函数 )*/const int N=1005;//假设有1005个点int pre[N];//记录前驱节点//初始化 void init(int n){ for(int i=0;i<n;i++){ pre[i]=i; //初始的时候使每个结点的前驱节点为自身 }} //查int find(int x){ i.

2022-02-17 21:18:49 350

原创 KMP算法(字符串匹配)

题目描述:给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。//前缀表统一减一 C++代码实现class Solution {public: void getNext(int* next, const string& s) { int j = -1; next[0] = j; for(int i =..

2022-02-14 16:24:12 173

原创 有效括号的生成

数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:class Solution {public: vector<string>ans; string str; void backtracK(vector<string>&ans,string&s..

2022-02-02 23:09:25 811

原创 最长递增子序列的个数(序列DP)

题目描述:给定一个未排序的整数数组 nums , 返回最长递增子序列的个数 。注意 这个数列必须是 严格 递增的。示例 1:输入: [1,3,5,4,7]输出: 2解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。示例 2:输入: [2,2,2,2,2]输出: 5解释: 最长递增子序列的长度是1,并且存在5个子序列的长度为1,因此输出5。来源:力扣(LeetCode)链接:https://leetcode-cn.com/pro.

2022-02-02 22:04:58 1399 1

原创 最长递增子序列(序列DP)

题目描述:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums = [7.

2022-02-02 21:45:18 195

原创 快乐数(今天你快乐了吗)

题目:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。示例 1:输入:n = 19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 0...

2022-02-02 00:29:12 228

原创 零钱兑换(完全背包问题)

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回-1 。你可以认为每种硬币的数量是无限的。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/coin-change示例1:输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1...

2022-02-02 00:05:39 708

原创 求素数的方法

暴力法void PrimeNum(int n){ int m=0; for(int i=2;i<n;i++){ if(n%i==0) m++; } if(m==0) cout<<"是素数”<<endl; else cout<<"不是素数"<<endl;}为了减少循环判断的次数,提高执行效率,可将循环条件改为i<sqrt(n),但由于sqrt函数计算的结果是实数,将其值赋给整型变.

2022-01-31 23:56:01 296

原创 图的存储结构

(一)邻接矩阵1.无向图的邻接矩阵2.有向图邻接矩阵3.网(有权图)的邻接矩阵4./*图的邻接矩阵存储表示法*///用两个数组分别存储顶点表和邻接矩阵#define MaxInt 32767 //表示极大值,即无穷#define MVNum 100 //最大顶点数typedef char VerTexType; //假设顶点的数据类型为字符型typedef int ArcType; //假设边的权值类型为整型typedef struct{ ...

2022-01-31 13:17:56 790

原创 哈夫曼树及哈夫曼编码

2022-01-31 12:41:07 276

原创 二叉树的建立、复制、计算深度,计算结点总数。

二叉树的建立按先序遍历建立二叉树的二叉链表按下列顺序读入字符ABC##DE#G##F###void CreatBinTree(BinTree &T){ //这里的T是指将被建立的二叉树 cin>>ch; if(ch=='#') T=NULL; else{ T=new BinNode; T->datd=ch; CreatBinTree(T->lchild);//构造左子树 .

2022-01-31 00:22:33 865

原创 遍历二叉树

先序遍历void PreOrderTraverse(BinTree T) //BinTree是指针类型;{ if(T) { visit(T); //访问根节点 PreOrderTraverse(T->lchild); PreorderTraverse(T->rchild); }}中序遍历void PreOrderTraverse(BinTree ...

2022-01-30 23:41:47 522

原创 二叉树的性质和存储结构

性质1:在二叉树的第i层上至多有2的i-1次方个节点(i>=1)。第i层至少有1个节点性质2:深度为k的二叉树至多有2的k次方-1个节点(k>=1)。深度为k时至少有k个节点。性质3:对任何一颗二叉树T,如果其叶子数为n0,度为2的节点数为n2,则n0=n2+1。二叉树的存储结构二叉树的顺序存储实现:按满二叉树的节点层次编号,依次存放二叉树中的数据元素。#define Maxsize 100 //最大节点数typedef..

2022-01-30 23:12:39 475

原创 顺序查找(Sequential Search)

顺序查找是最简单的一种查找方法。其基本思想是:从线性表的一端开始,依次将每个记录的关键字与给定值进行比较,若某个记录的关键字等于给定值,表示查找成功,返回记录序号;若将线性表中所有记录都比较完,仍未查找到关键字与给定值相等的记录,则表示查找失败,返回一个查找失败的标志值。#include<iostream>using namespace std;#define Len 8int source[]={69,65,34,57,93,66,28,54};int SeqSea...

2022-01-30 14:37:09 3313

原创 区间列表的交集(Leetcode 双指针,数组)

题目描述:给定两个由一些 闭区间 组成的列表,firstList 和 secondList ,其中 firstList[i] = [starti, endi] 而secondList[j] = [startj, endj] 。每个区间列表都是成对 不相交 的,并且 已经排序 。返回这 两个区间列表的交集 。形式上,闭区间[a, b](其中a <= b)表示实数x的集合,而a <= x <= b 。两个闭区间的 交集 是一组实数,要么为空集,要么为闭区间。例如,...

2022-01-16 22:49:48 4512

原创 C++ STL 算法库之max_element、min_element算法

max−​element(begin,end,cmp)功能描述:返回容器[begin, end)段中最大元素所在的第一个迭代器。参数介绍:begin寻找范围的起始迭代器,end寻找范围的尾端迭代器的下一个迭代器,cmp比较函数,对于int、double等基本数据类型可以不需要该参数,对于自定义数据类型需要提供该参数或者重载操作符"<"。返回值:容器[begin, end)段中最大元素所在的第一个迭代器。min−​element(begin,end,cmp)功能描述:返...

2022-01-14 16:34:21 519

原创 数塔(递推法)

有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?Input输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。Output对于每个测试实例,每行输出最大和。Sample Input2573 88 1 0 2 7...

2022-01-05 19:34:22 595

原创 最大公约数和最小公倍数

暴力法:int main(){ int a,b; cin>>a>>b; while (b!= 0)//辗转相除 { int temp = a % b; a = b; b = temp; } int gcd=a;//gcd表示最大公约数}递归法int gcd(int a,int b){ if(a%b==0) return b; else return gcd(b,a%b);}...

2022-01-04 16:32:31 181

原创 小汽车的位置

题目描述有一辆智能小车,最初(时间为0)的位置为(0,0),我们想知道它最后的位置。小车以每小时10公里的速度向北移动(以北为y轴正向,以东为x轴正向)。小车会受到一系列依照时间戳记排序的命令,1表示“向左转”,2表示“向右转”,3表“停止”。每个命令的前面有一个时间戳记,所以我们知道该命令是何时发出的。最后一个命令一定是“停止”。我们另外假设,这辆小车非常灵活,它可以在瞬间转弯。以下列输入为例。小车在时间为5的时候收到一个“向左转”的命令1,在时间10收到一个“向右转”的命令2,在时间15收到一个“

2021-12-16 00:00:00 133

原创 二进制数啊

题目描述将一个二进制数,转换为对应的十进制数。输入输入一个只含有’0’和’1’的字符串,以回车结束,表示一个二进制数。该二进制数无符号位,长度不超过31。输出输出一个整数,为该二进制数对应的十进制数。样例输入Copy100000000001样例输出Copy2049提示(1) 整数运算尽量避免pow之类的double类型函数,以免截断取整带来错误。 (2)可使用递推思想,充分利用中间结果。类似思想可参考秦九韶算法。秦九韶算法是中国南宋时期的数学家...

2021-12-15 13:45:00 146

原创 正弦函数 X

题目描述输入x,计算上面公式的前10项和。输入输入一个实数x。输出输出一个实数,即数列的前10项和,结果保留3位小数。样例输入Copy1样例输出Copy0.841

2021-12-15 01:30:00 165

原创 向Z同学学习

题目描述Z同学为了实现暑假去云南旅游的梦想,决定以后每天只消费1元,每花k元就可以再得到1元,一开始Z同学有M元,问最多可以坚持多少天。输入输入2个整数M, k,(2 <= k <= M <= 1000)。输出输出一个整数,表示M元可以消费的天数。样例输入Copy4 3样例输出Copy5int main(){ int M, k,counter=0;//counter用来计算天数 cin >> M &g...

2021-12-14 21:30:05 2755

原创 有问题的里程表

题目描述某辆汽车有一个里程表,该里程表可以显示一个整数,为该车走过的公里数。然而这个里程表有个毛病:它总是从3变到5,而跳过数字4,里程表所有位(个位、 十位、百位等)上的数字都是如此。例如,如果里程表显示339,汽车走过1公里之后,该里程表显示350。输入输入一个整数num,表示里程表显示的数值,1 < num < 1000,且一定不含整数4。输出输出一个整数,为该汽车实际行驶的公里数。例如,如果该里程表显示55,则实际走过的公里 数是40。样例输入Co..

2021-12-14 21:26:29 114

原创 求解不等式

题目描述已知不等式 1!+2!+3!+...+m!‹n,请编程对用户指定的n值计算并输出满足该不等式的m的整数解。输入输入一个整数n,n为int范围内的正整型。输出输出m的取值范围,具体格式见输出样例。样例输入Copy2000000000样例输出Copym<=12提示注意计算过程中的类型溢出问题int main(){ int n, m = 0; double temp = 1, sum = 0;//为了防止数据...

2021-12-14 21:21:57 914

原创 问题 G: 加密字符

题目描述从键盘输入一批字符,以@结束,按要求加密并输出。输入从键盘输入一批字符,占一行,以@结束。输出输出占一行加密规则:1)所有字母均转换为小写。2)若是字母'a'到'y',则转化为下一个字母。3)若是'z',则转化为'a'。4)其它字符,保持不变。样例输入CopyKyh520@样例输出Copylzi520#include<iostream>#include<ctype.h>using names...

2021-12-14 21:16:40 3185

原创 ZZULI数列求和

题目描述输入n和a,求a+aa+aaa+…aa…a(n个a),如当n=3,a=2时,2+22+222的结果为246输入包含两个整数,n和a,含义如上述,你可以假定n和a都是小于10的非负整数输出输出前n项和,单独占一行样例输入Copy3 2样例输出Copy246提示#include<iostream>using namespace std;int main(){ int n, a,ret=...

2021-12-14 21:01:51 507

原创 字符串转换

将一串字符串中的数字转换成十进制整数,在乘2输出。

2021-12-14 15:42:16 3553

原创 最大公约与最小公倍

在这里求最大公约数我们应用辗转相除法,“辗转相除法求两个数的最大公约数的步骤如下:先用小的一个数除大的一个数,得第一个余数;再用第一个余数除小的一个数,得第二个余数;又用第二个余数除第一个余数,得第三个余数;这样逐次用后一个数去除前一个余数,直到余数是0为止.那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数).最小公倍数=两数之积/最大公约数#include<iostream>using namespace st...

2021-12-13 11:27:27 112

原创 ZZULI空心菱形

题目描述输入一个整数n,(1<=n<=20),输出一个空心菱形,其中每个边由n个'*'组成。输入输入包含一个整数,n(1<=n<=20)输出输出一个空心菱形,每个边由n个'*'组成样例输入5样例输出 * * * * * * ** * * * * * * * *#include<iostream>using namespace std;int ma

2021-12-12 21:48:44 470

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除