- 博客(43)
- 收藏
- 关注
原创 链表的快速排序(C/C++实现)
快速排序的是交换排序其中的一种,主要是采用分治的思想,每次迭代在当前区间中选取一个数作为哨兵,通过一系列的交换操作将当前区间分为左区间和右区间【使得左区间的值全部小于等于哨兵,右区间的值全部大于等于哨兵】。然后再对左区间、右区间执行这种划分区间的策略操作,当区间的长度为1时停止。等到所有分治的区间长度都为1时,此时的原数组就已经是一个排好序的数组了。// 当前区间的长度小于等于1时停止循环// 创建哨兵 mid// 创建i,j指针进行移动。
2024-09-15 01:17:05 1556 4
原创 单链表的冒泡排序(C/C++实现)
前言大家在做需要排名的项目的时候,需要把各种数据从高到低排序,如果用的冒泡排序的话,处理数组是十分简单的,因为数组的存储空间的连续的,可以通过下标就可以简单的实现,但如果是链表的话,是随机分配的,不能像数组那样通过下标就直接实现。所以在这里给大家介绍一个简单一点的冒泡排序冒泡排序冒泡排序的是交换排序其中的一种,主要思想是每一个元素与后一个元素比较,若这个元素大于后一个元素,则交换这两个元素的位置(这里采用从小到大排序),第一次排序后最后一个数已经变成了最大数,再进行n-2次排序即可完成(假设有n个数据
2020-06-22 11:40:07 48326 65
原创 二、基础语法
所谓数组,就是一个集合,里面存放了相同类型的数据元素特点1:数组中的每个">数据元素都是相同的数据类型特点2:数组是由">连续的内存位置组成的一维数组数据类型 数组名[数组长度];【此时所有值均为垃圾值】数据类型 数组名[数组长度] = {值1,值2,...};【此时不够数据长度的值补0】、【如果值的数量比数组长度要长,那么会报错】数据类型 数组名[] = {值1,值2,...};【给的值的长度就是数组的长度】//定义方式1//数据类型 数组名[元素个数];
2024-10-30 21:09:54 1055
原创 音视频同步版本【基于音频】
其实和基于外部时钟的原理操作基本上一模一样。只不过音频帧不需要去匹配现实时钟了,只有视频帧需要匹配现实时钟。而视频帧需要去匹配音频帧的时间,那么就需要给时钟设置一个补偿,因为现在是以音频帧为标准。假如现在现实时钟到了50pts,而音频帧到了80pts,那么10ms后出现的视频帧匹配的时钟pts应该就是90pts【现实时钟的60pts加上补偿的30pts(30=80-50,这里是在读取音频帧的时候设置的补偿)】
2024-10-25 13:24:11 1319
原创 音视频同步版本【基于外部时钟】--版本的优化,现在视频可以正常至播放结束
问题:在主线程的while读取包和帧的地方,第一句的printf有时候会导致程序崩溃。注释掉了就不会有问题,但是如果放开,那么有时候启动就会崩溃,有时候就不会崩溃。版本的优化,之前的每个代码版本都没有对获取到的包和帧进行内存释放,导致内存占用过多无法创建新的包崩溃了。
2024-10-25 13:23:10 583
原创 音视频同步版本【基于外部时钟】
拿当前时间作为起点,然后每次播放的时候判断当前时间减去起点时间得到的毫秒数,如果这一帧对应的pts毫秒数大于当前得到的毫秒数,那么不能播放,因为超前了。如果小于,那么就正常播放。
2024-10-25 13:21:21 189
原创 单纯音视频同时播放的优化版本,去除了音频中的噪音
相比,该篇使用了两个队列读取分别保存音频帧和视频帧,然后开启了两个线程分别播放音频和视频,这样就不会造成像只在主线程中同时处理音频帧和视频帧时,两个音频帧中间还有一个视频帧,导致PCM长时间未填充产生的噪音了。【依旧没有做音视频同步,但是可以正常同时播放音频和视频了】
2024-10-24 17:24:55 286
原创 单纯音视频同时播放
音频有噪音的原因是因为等待太久没播放,超过1ms【未调研,只百度过】未填充PCM数据就会有噪音。而这里的代码是音频帧和视频帧在同一个while中获取的,获取视频帧后会等待23ms,再去获取音频帧,那么两个音频帧之间就会有23ms的间隔,这样就会导致PCM数据长时间未填充而中断出现了噪音。的合并,播放途中会有音频会有噪音。【这里实际上没做音视频同步,只是正常把音频和视频一起播放罢了,当播放久了之后就会发现会有不同步的情况了】
2024-10-24 17:22:13 211
原创 @Autowired和@Resource的用法与区别
@Autowired 和 @Resource 来自不同的“父类”,其中 @Autowired 是 Spring 定义的注解,而 @Resource 是 Java 定义的注解,它来自于 JSR-250(Java 250 规范提案)。当它们的实现类只有一个时,那么用法没有任何区别,但是如果有多个时,就需要额外处理了。当存在多个实现类时,不做额外处理程序会报错无法运行。
2024-10-23 09:10:04 802
原创 可以拖动屏幕的简单页面播放示例
相比之下,通过事件系统来触发帧的更新可以更精确地控制时间间隔,因为你可以更精确地测量两帧之间的实际时间,并据此调整下一帧的绘制时间。但是刷新屏幕这个事件是我们自定义的,SDL不会处理这个事件,那么就可以由我们自己处理这个事件,所以我们接下来只在获取到刷新屏幕事件时进行刷新屏幕,这样就不会报错导致SDL窗口崩溃了。事件驱动编程:SDL的设计是基于事件驱动编程的。使用SDL的事件系统来处理视频播放的帧率控制更符合SDL的设计理念,因为它允许你的应用程序在适当的时候响应事件,而不是被Sleep函数阻塞。
2024-10-22 08:55:05 737
原创 最简单页面播放示例
由于读包和解包和视频播放在同一个while里面,导致期待的SDL_Delay(23)实际上是大于23秒的,因为解码还需要耗时。
2024-10-22 08:49:32 206
原创 makefile的介绍与使用
一样每次都需要将项目的每一个文件都重新编译一次。极大的提高了编译效率。比如之前的链接文件每一个都需要写出来,现在只需要一行就能写出来了。好处:每次只会重新编译修改了的那一个文件,而不像。原因:Vim可能默认会将 Tab 换成 空格。又少了一些需要固定写死的内容。
2024-09-15 09:57:47 861
原创 2.快速搭建 SpringBoot hello world
Spring Boot 2.6.1 需要Java 8,并且与Java 15(包括)兼容。还需要Spring Framework 5.2.10.RELEASE或 更高版本。
2024-07-10 16:14:23 513
原创 1. SpringBoot简介
采用 Spring Boot 可以大大的简化开发模式,它集成了大量常用的第三方库配 置,所有你想集成的常用框架,它都有对应的组件支持,例如 Redis、MongoDB、Dubbo、kafka,ES等等。另外 SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。不仅继承了Spring框架原有的优秀特性,它并不是用来替代 Spring 的解决方案,而和 Spring 框架紧密 结合进一步简化了Spring应用的整个搭建和开发过程。
2024-07-10 16:12:38 382
原创 《雁门太守行》
敌兵滚滚而来,犹如黑云翻卷,像要摧倒城墙;战士们的铠甲在阳光照射下金光闪烁。号角声响彻秋夜的长空,边塞战场上的血迹在暮色中呈现出暗紫色。为了报答国君的赏赐和厚爱,手操宝剑甘愿为国血战到死。红旗半卷,援军赶赴易水;夜寒霜重,鼓声郁闷低沉。黑云压城城欲摧,甲光向日金鳞开。角声满天秋色里,塞上燕脂凝夜紫。半卷红旗临易水,霜重鼓寒声不起。报君黄金台上意,提携玉龙为君死。
2024-06-28 17:53:47 349
原创 快速排序(C/C++实现)—— 简单易懂系列
排序作用的重要性是不言而喻的,例如成绩的排名、预约时间的先后顺序、不同路程的消耗与利润等。快排可以实现`O(n * logn)`的时间复杂度,`O(logn)`的空间复杂度来实现排序【虽然结果是不稳定的】。
2024-06-28 17:37:11 1009
原创 返回枚举类给前端
在实际开发过程中,前端的下拉框或者单选按钮的内容通常的需要和后端匹配的,故一般会由后端将下拉框的内容或单选框的内容传给前端,而这些内容在后端一般是由枚举类存储的,
2024-05-26 22:15:06 916
原创 一款自动生成CRUD代码的自定义Starter
基于spring-boot实现web端的基础配置,包含了基础代码的自动生成,如代码接口CRUD、实体类的自动生成,JWT的鉴权等。基础模块:主要用于实现系统的增删改查自动生成功能,是默认配置的 其他模块:包含了Jwt鉴权、异常处理、错误页面跳转等,可以通过yml开启/取消
2023-06-10 17:07:22 603
原创 试题 J: 砍竹子
题目链接:点击跳转题目描述:这天,小明在砍竹子,他面前有 n 棵竹子排成一排,一开始第 i 棵竹子的高度为 hi。他觉得一棵一棵砍太慢了,决定使用魔法来砍竹子。魔法可以对连续的一段相同高度的竹子使用,假设这一段竹子的高度为 H,那么使用一次魔法可以把这一段竹子的高度都变为⌊⌊H2⌋+1−−−−−−−√⌋,其中 ⌊x⌋ 表示对 x 向下取整。小明想知道他最少使用多少次魔法可以让所有的竹子的高度都变为 1。输入格式 第一行为一个正整数 n,表示竹子的棵数。第二行共 n 个空格分开的正整数
2022-04-19 17:30:15 946
原创 试题 H: 扫雷
题目链接:点击跳转题目描述:小明最近迷上了一款名为《扫雷》的游戏。其中有一个关卡的任务如下:在一个二维平面上放置着 n 个炸雷,第 i 个炸雷 (xi,yi,ri) 表示在坐标 (xi,yi) 处存在一个炸雷,它的爆炸范围是以半径为ri 的一个圆。为了顺利通过这片土地,需要玩家进行排雷。玩家可以发射 m 个排雷火箭,小明已经规划好了每个排雷火箭的发射方向,第 j 个排雷火箭 (xj,yj,rj) 表示这个排雷火箭将会在(xj,yj) 处爆炸,它的爆炸范围是以半径为 rj 的一个圆,在
2022-04-19 17:12:54 2401
原创 试题 F: 统计子矩阵
题目链接:点击跳转题目描述:给定一个 N×M 的矩阵 A,请你统计有多少个子矩阵 (最小 1×1,最大 N×M) 满足子矩阵中所有数的和不超过给定的整数 K?输入格式 第一行包含三个整数 N,M 和 K。之后 N 行每行包含 M 个整数,代表矩阵 A。输出格式 一个整数代表答案。数据范围对于 30% 的数据,N,M≤20,对于 70% 的数据,N,M≤100,对于 100%的数据,1≤N,M≤500;0≤Aij≤1000;1≤K≤250000000。输入样例:3 4 10
2022-04-19 16:57:24 3316
原创 试题 G: 积木画
题目链接:点击跳转题目描述:小明最近迷上了积木画,有这么两种类型的积木,分别为 I 型(大小为 2 个单位面积)和 L 型(大小为 3 个单位面积):同时,小明有一块面积大小为 2×N 的画布,画布由 2×N 个 1×1 区域构成。小明需要用以上两种积木将画布拼满,他想知道总共有多少种不同的方式?积木可以任意旋转,且画布的方向固定。输入格式 输入一个整数 N,表示画布大小。输出格式 输出一个整数表示答案。由于答案可能很大,所以输出其对 1000000007 取模后的值。数据范围
2022-04-16 21:54:34 444
原创 试题 E: X 进制减法
题目链接:点击跳转题目描述:进制规定了数字在数位上逢几进一。X 进制是一种很神奇的进制,因为其每一数位的进制并不固定!例如说某种 X 进制数,最低数位为二进制,第二数位为十进制,第三数位为八进制,则 X 进制数 321 转换为十进制数为 65。现在有两个 X 进制表示的整数 A 和 B,但是其具体每一数位的进制还不确定,只知道 A 和 B 是同一进制规则,且每一数位最高为 N进制,最低为二进制。请你算出 A−B 的结果最小可能是多少。请注意,你需要保证 A 和 B 在 X 进制下都是
2022-04-16 21:42:22 1250 4
原创 试题 D: 修剪灌木
题目链接:点击跳转题目描述:爱丽丝要完成一项修剪灌木的工作。有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始,每天向右修剪一棵灌木。当修剪了最右侧的灌木后,她会调转方向,下一天开始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。灌木每天从早上到傍晚会长高 1 厘米,而其余时间不会长高。在第一天的早晨,所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高。输入格
2022-04-16 21:25:49 402
原创 试题 C: 刷题统计
题目链接:点击跳转题目描述:小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题?输入格式 输入一行包含三个整数 a,b 和 n。输出格式 输出一个整数代表天数。数据范围 对于 50% 的评测用例,1≤a,b,n≤106, 对于 100% 的评测用例,1≤a,b,n≤1018。输入样例:10 20 99输出样例:8样例解释:无题目分析:就
2022-04-16 21:21:43 1681
原创 试题 I: 李白打酒加强版
题目链接:题目描述:话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒 2 斗。他边走边唱:无事街上走,提壶去打酒。逢店加一倍,遇花喝一斗。这一路上,他一共遇到店 N 次,遇到花 M 次。已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白这一路遇到店和花的顺序,有多少种不同的可能?注意:壶里没酒 ( 0 斗) 时遇店是合法的,加倍后还是没酒;但是没酒时遇花是不合法的。【输入格式】第一行包含两个整数 N 和 M.【输出格式】输出一个整数表示答
2022-04-11 23:41:21 927
原创 P1842. 牛奶桶
题目链接:https://www.acwing.com/problem/content/1844/题目描述:农夫约翰收到了一份牛奶订单,订购 M 单位的牛奶。不幸的是,他的挤奶机刚刚坏掉了。他只有三个桶,容积分别为 X,Y,M(1≤X<Y<M)。三个桶最初都是空的。使用这三个桶,他可以执行以下两种类型的操作任意次数:将最小的桶(容积为 X 的)装满牛奶,再将其中的牛奶全部倒入容积为 M 的桶中,前提是这不会导致容积为 M 的桶溢出牛奶。将中号的桶(容积为 Y 的)装满牛奶
2022-04-11 22:28:03 179
原创 1913. 公平摄影(AcWing)
题目链接:https://www.acwing.com/problem/content/1915/题意:农夫约翰的 N 头奶牛站在一维长围栏的不同位置。第 i 头牛位于位置 xi,其所属品种为 bi(根西岛牛或荷斯坦牛)。所有奶牛的位置各不相同。约翰想给一段连续区间内的奶牛拍摄一张照片,用来在乡村集市上展览。但是我们希望他所有品种的奶牛都能在照片中得到公平的展示。因此,他希望确保无论照片中出些哪些品种的奶牛,每种品种的奶牛在照片中的数量都必须相等。例如,一张照片中只包含荷斯坦牛是可以
2022-01-20 20:18:08 723
原创 C. Balance the Bits (Codeforces Round #712 (Div. 2))
题目链接:https://codeforces.com/contest/1504/problem/C题意:待补全:思路:待补全:代码:#include<bits/stdc++.h>using namespace std;const int N = 110;typedef pair<int, int> PII;typedef long long LL;int main(){ int t; cin >> t; w
2021-10-24 13:55:11 135
原创 C - Planar Reflections (Codeforces Round #711 (Div. 2))
题目链接:https://codeforces.com/contest/1498/problem/C思路:有点懒,等会写,具体可以看代码代码:#include<bits/stdc++.h>using namespace std;typedef long long LL;typedef pair<int, int> PII;const int N = 1e3 + 10, MOD = 1e9 + 7;int dp[N][N];//dp[i][j]代表当前还有
2021-10-17 22:02:02 130
原创 C. Rings (Codeforces Round #741 (Div. 2))
题目链接:https://codeforces.com/contest/1562/problem/C题意:给出一个长度为n的01字符串,给定两个区间【l1, r1】,【l2, r2】这两个区间要满足1:l1 != l2 || r1 != r2 (必须满足一个)2: r1 - l1 + 1 >= n / 2, r2 - l2 + 1 >= n / 2.3:假设第一个区间为s[l1, r1], 第二个区间为w[l2, r2],那么s和w这个区间二进制表达的数转化为10进制的数必须满
2021-08-27 13:20:38 192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人