- 博客(833)
- 资源 (19)
- 收藏
- 关注
原创 将一个整数输出为质因子相乘的形式
若 n 是合数,则在 1~sqrt(n) 范围内进行因子判别。简证如下:给定一个数字 n,朴素的求其因子的方法为枚举 [1,n] 的所有数进行余数为 0 判定,算法时间复杂度为 O(n)。此处加入一个小优化,即若 m 为 n 的因子,那么 n/m 必然也为 n 的因子,不妨设 m≤n/m,则有 m≤sqrt(n),所以只需在 [1,sqrt(n)] 内枚举所有数进行余数为 0 判定即可,算法时间复杂度优化为 O(sqrt(n))。
2024-04-23 06:33:05 426
原创 分解质因子
若 n 是合数,则在 1~sqrt(n) 范围内进行因子判别。简证如下:给定一个数字 n,朴素的求其因子的方法为枚举 [1,n] 的所有数进行余数为 0 判定,算法时间复杂度为 O(n)。此处加入一个小优化,即若 m 为 n 的因子,那么 n/m 必然也为 n 的因子,不妨设 m≤n/m,则有 m≤sqrt(n),所以只需在 [1,sqrt(n)] 内枚举所有数进行余数为 0 判定即可,算法时间复杂度优化为 O(sqrt(n))。
2024-04-22 21:13:04 198
原创 统计一个整数的因子个数
统计一个整数的因子个数的方法:1.对给定整数分解质因子2.把不同质因子的个数加 1 后相乘所得乘积,便是给定整数的因子的个数。(注意:计算出的因子个数包含 1 这个因子)
2024-04-22 18:36:52 286
原创 PTA:L1-006 连续因子
○ 若 n 是素数,输出 1 之后,换行输出它本身;○ 若 n 是合数,则在1~sqrt(n) 范围内进行因子判别。简证如下:给定一个数字 n,朴素的求其因子的方法为枚举 [1,n] 的所有数进行余数为 0 判定,算法时间复杂度为 O(n)。此处加入一个小优化,即若 m 为 n 的因子,那么 n/m 必然也为 n 的因子,不妨设 m≤n/m,则有 m≤sqrt(n),所以只需在[1,sqrt(n)] 内枚举所有数进行余数为 0 判定即可,算法时间复杂度优化为 O(sqrt(n))。
2024-04-22 13:32:24 304
原创 PTA:L1-020 帅到没朋友
%5d:右对齐;不足5位左补空格、大于5位按实际输出。 %05d:右对齐;不足5位左补0、大于5位按实际输出。printf("%5d",1); //输出:****1(*为空格)printf("%05d",1); //输出:00001
2024-04-10 23:15:54 756
原创 二维数组赋初值 -1 的典型错误语句:int a[5][5]={-1};
二维数组赋初值 -1 的典型语句:memset(a,-1,sizeof(a));
2024-04-09 12:43:13 115
原创 蓝桥杯:跳跃 ← 深搜(dfs)或动态规划(dp)
● 据题意,每次只能往右或往下走,且一步走的直线距离不超过 3,故有 9 种走法。这 9 中走法分别为:(0,1)、(0,2)、(0,3)、(1,0)、(1,1)、(1,2)、(2,0)、(2,1)、(3,0)。在代码中,可设 x 坐标增量 dx 及 y 坐标增量 dy 分别为:dx[]={0,0,0,1,1,1,2,2,3}及 dy[]={1,2,3,0,1,2,0,1,0}
2024-04-07 12:12:50 820 1
原创 C++ 共用体(union) ← 关键字 union
● 共用体(union),允许在相同的内存空间中存储不同的数据类型。●共用体中的所有成员共享相同的内存地址,这意味着在同一时刻只能使用共用体的一个成员。●共用体主要用于节省内存空间,特别是在处理多种数据类型但不需要同时使用它们的情况下。
2024-04-05 22:52:34 391
原创 C++ 枚举类型 ← 关键字 enum
●枚举类型(enumeration)是 C++ 中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。●枚举元素作为常量,它们是有值的。C++ 编译时,依序对枚举元素赋整型值0,1,2,3,…。●在C++中,枚举类型不支持下标访问。因为枚举类型被设计为常量集合,类似于简单的整型值。如果需要根据索引来获取枚举值,可以使用 switch 语句或者 if-else 逻辑来实现。
2024-04-05 08:17:21 194
原创 蓝桥杯:七步诗 ← bfs
BFS算法助记:建-入-量:头-出-入,详见:https://blog.csdn.net/hnjzsyjyj/article/details/125801217
2024-04-04 18:08:16 613
原创 内联函数(inline function)
理论上,使用内联函数(inline function)可以加速程序运行,因为它们消除了与函数调用关联的开销。
2024-04-02 15:53:26 182
原创 友元函数(friend function)← 面向对象
友元类(Friend Class)是 C++ 中的另一个重要概念,它允许一个类将另一个类声明为自己的友元,从而使得被声明为友元的类可以访问该类的私有成员。通过友元类,我们可以实现多个类之间的数据和成员函数共享。
2024-03-31 20:48:44 310
原创 C++函数模板及类模板 ← 面向对象
泛型编程,是 C++ 的一种重要编程思想,其利用的主要技术是模板。C++ 提供两种模板机制:函数模板(function template)和类模板(class template)。
2024-03-30 16:23:05 150
原创 第十五届蓝桥杯第三期模拟赛第十题 ← 上楼梯
本例用到的 vector 语法简介vector v(10); // 定义了10个 int 类型元素的向量 v,未初始化;vector v(10,1); //定义了10个 int 类型元素的向量 v,每个元素初始化为1。
2024-03-29 22:20:45 1486
原创 HDU 1100:Trees Made to Order ← 卡特兰数
本题大意:给定一个二叉树的排序规则,之后输入一个序号,然后按格式约定输出这个序号所对应的二叉树。本题给出的二叉树的排序规则如下:(1)结点个数多的二叉树,序号更“大”;(2)结点个数一样的二叉树,左子树高度高的二叉树,序号更“大”;(3)结点个数一样的二叉树,左子树相同,右子数高度高的二叉树,序号更“大”。
2024-03-29 13:51:19 884
原创 C++ 中的虚函数和纯虚函数 ← 面向对象
多态(polymorphism)是面向对象编程的一大特点。而虚函数、纯虚函数都是实现多态的机制。○ 虚函数定义基类中某个函数为虚函数,是为了允许用基类的指针来调用子类中的这个函数。子类可以(也可以不)重新定义基类的虚函数。虚函数语法示例:virtual void foo();○ 纯虚函数定义基类中某个函数为纯虚函数,是为了实现一个接口。子类必须提供基类的纯虚函数的个性化实现,起到一个规范强制的作用。纯虚函数语法示例:virtual void foo()=0;含有纯虚函数的类,称为抽象类。
2024-03-27 11:58:05 214
原创 AcWing 4609:火柴棍数字 ← 贪心算法
○ 给定的火柴棍数字中,凑出 1 需要 2 根火柴,凑出 7 需要 3 根火柴 ……○ 位数越多的数,代表的数越大。○而给定一个数,能凑出的最大位数为: 若 n 为偶数,则最多能凑出 n/2 位,每位为 1; 若 n 为奇数,依然能最多能凑出 n/2 位,其中最高位为 7,其他 n/2-1 位均为 1。
2024-03-25 23:54:40 944 1
原创 LeetCode 678:有效的括号字符串 ← 贪心算法
代码中的 LMax 是当前未配对的左括号 ( 的最大个数,LMin 是当前未配对的左括号 ( 的最小个数。
2024-03-20 14:45:47 477
原创 AcWing 1510:楼梯 ← 浮点数二分
因为浮点数的精度很高,只需要逐渐逼近题目要求的精度就可以了。这里需要注意的是,需要预先设定一个阈值 eps,一般是比题目的精度还要高 2 位。
2024-03-19 06:31:35 832
原创 AcWing 680:剪绳子 ← 浮点数二分
● 因为浮点数的精度很高,只需要逐渐逼近题目要求的精度就可以了。这里需要注意的是,需要预先设定一个阈值 eps,一般是比题目的精度还要高 2 位,比如题目要求的精度是1e-2,那么就可以设eps=1e-4。如本题中的while(ri-le>1e-4){……}。● 当数据比较大时,可能会产生溢出。所以,本题中使用 double mid=le+(ri-le)/2; 而不是 double mid=(le+ri)/2;
2024-03-17 06:13:05 375
原创 AcWing 790:数的三次方根 ← 浮点数二分
浮点数二分的经典模板如本题代码所示。因为浮点数的精度很高,只需要逐渐逼近题目要求的精度就可以了。这里需要注意的是,需要预先设定一个阈值 eps,一般是比题目的精度还要高 2 位,比如题目要求的精度是1e-6,那么就可以设eps=1e-8。
2024-03-16 22:26:04 508 1
原创 AcWing 1227:分巧克力 ← 二分法
例如一块 6×5 的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3 的巧克力。小明一共有 N 块巧克力,其中第 i 块是 Hi×Wi 的方格组成的长方形。当然小朋友们都希望得到的巧克力尽可能大,你能帮小明计算出最大的边长是多少么?为了公平起见,小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。二分查找,也称为折半查找,是一种高效的查找方法。,此时为了防止死循环,计算 mid 时需要加 1( 见下文代码中的。输出切出的正方形巧克力最大可能的边长。小明拿出了珍藏的巧克力招待小朋友们。
2024-03-16 16:41:38 509 1
原创 二分查找算法模板
模板一:当我们将区间 [le, ri] 划分成 [le, mid] 和 [mid+1, ri]时,其更新操作是 ri=mid 或者 le=mid+1,计算 mid 时不需要加 1。模板二:当我们将区间 [le, ri] 划分成 [le, mid-1] 和 [mid, ri] 时,其更新操作是 ri=mid-1 或者 le=mid,此时为了防止死循环,计算 mid 时需要加 1。
2024-03-16 15:56:12 441 1
原创 【经典代码】统计字符串中各字符个数 ← string
利用 (char)(i+'a') 将 0~25(i 的取值)转换为对应的 'a'~'z'
2024-03-11 21:53:28 661 1
原创 AcWing 493:笨小猴 ← 字符串
数组模拟邻字符串中字符的计数:设字符串为 s,则 s[i] 是 'a'~'z' 中的某个字符,显然 s[i]-'a' 的值为 0~25 中的某个值。故可声明一个数组 a[26],用于存储各个字符的值。即,a[0] 存储的是字符 'a' 出现的次数, a[1] 存储的是字符 'b' 出现的次数,……,a[25] 存储的是字符 'z' 出现的次数。在本代码中,字符串中各字符的出现次数用代码for(int i=0; i
2024-03-11 20:29:22 583 1
原创 请编程输出无向无权图各个顶点的度 ← 链式前向星存图
本例需要用到基于链式前向星的广度优先搜索(BFS)。链式前向星广度优先搜索(BFS)参见:https://blog.csdn.net/hnjzsyjyj/article/details/119917795
2024-03-09 11:26:57 859 1
原创 AcWing 872:最大公约数 ← 递归及非递归解法等
求最大公约数常见的3种算法:辗转相除法 ← 递归更相减损法 ← 非递归利用 algorithm 包中自带的函数 __gcd()
2024-02-24 21:40:21 486 1
原创 按形如 a*sqrt(b) 的格式输出一个非负整数的平方根
输入一个非负整数 x,若能完全开平方根,则输出其对应的整数平方根值。否则,按形如a*sqrt(b) 的格式输出其平方根值(a 与 b 均为整数,且 a≠1,b≠1)。
2024-02-24 15:09:24 416 2
原创 priority_queue元素为结构体时重载 operator< 的两种等价代码
STL priority_queue 具有“自动排序”的强大功能。其默认使用 operator< 的比较方式进行排序。 但是,对于自定义类型(如结构体、联合体、枚举等),则必须重载 operator< 比较方式。
2024-02-24 09:01:33 425
QGIS二次开发 の PyCharm开发环境配置.pdf
2021-04-03
数据结构(C_语言描述)(第2版)_陈广_9787301247761_课后习题参考答案.doc
2019-05-14
OpenCV.2.Computer.Vision.Application.Programming.Cookbook
2012-09-01
Data Structures and Problems Solving Using JAVA (Fourth Edition)
2011-12-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人