![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序与算法
文章平均质量分 91
一只爬爬虫
这个作者很懒,什么都没留下…
展开
-
m/2个人拉m盏灯后求灯的状态问题
在上一节中介绍了m个人拉m盏灯的问题。下边介绍一下m/2个人拉m盏灯的问题。本题和上一解题目的区别是:上一节的题目是求灯编号i的所有因数为奇数的情况,这个题目是找灯编号i的奇因数为奇数的情况。最终根据分析结果,灯灭的情况分两种,一种是完全平方数,一种是完全平方数的2倍。原创 2024-07-18 20:33:15 · 924 阅读 · 0 评论 -
m个人拉m盏灯后求灯的状态问题
m个人拉m盏灯问题,可以转化为求解m以内完全平方数的问题,编号为完全平方数的灯状态与初始状态相同,其他的灯状态与初始状态相反。可以利用求m以内最大完全平方数对应的平方根的方法,再根据这些平方根是连续的自然数,从而找出所有完全平方数对应的平方根,再根据这些平方根,求出所有对应的完全平方数。这种方法效率最高。原创 2024-07-18 16:10:51 · 1116 阅读 · 0 评论 -
你真的理解补码了吗?
你真的理解补码了码?补码真正的几个含义(1)一个负数的补码等于原码取反(符号位不变)加1,非负数的补码等于原码;(2)减去一个数等于加这个数的相反数的补码;(3)一个负数的反码就是这个数原码的每一位都取反,其中符号位不变,非负数的反码等于原码。原创 2024-06-06 00:24:31 · 869 阅读 · 0 评论 -
捋一捋C++中的逻辑运算(一)——表达式逻辑运算
编程中有三种结构,顺序结构、选择结构和循环结构。在选择结构中,需要用到逻辑值来判断程序选择运行的部分。这个逻辑值一般都是一个比较复杂的逻辑表达式运算的结果,用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子称为逻辑表达式,计算逻辑表达式结果的过程就是逻辑运算。逻辑运算经常与if...else语句或条件表达式搭配使用。原创 2024-06-04 19:00:06 · 980 阅读 · 0 评论 -
用贪心算法计算十进制数转二进制数(小数部分)
十进制小数转化二进制小数常用的方法为乘2取整法,这种方法是最基本最常用的,但是计算量大,还容易出错。本文采用贪心算法进行十进制小数转化为二进制小数,对比发现,贪心算法计算量少,准确率较高,不容易算错,也更直观,更好理解和记忆,但是需要我们事先记住一些常用的2^(-n)的值,这样才有助于我们更快更准地计算出结果。原创 2024-06-01 20:10:39 · 1189 阅读 · 0 评论 -
用贪心算法计算十进制数转二进制数(整数部分)
十进制整数转化二进制数常用的方法为短除反向取余法,这种方法是最基本最常用的,但是计算步骤多,还容易出错。本文采用贪心算法进行十进制整数转化为二进制数,对比发现,贪心算法计算步骤少,准确率也较高,不容易算错,但是需要我们事先记住一些常用的2^n的值,这样才有助于我们更快更准地计算出结果。原创 2024-06-01 10:18:15 · 1036 阅读 · 0 评论 -
【ardunio】青少年机器人四级实操代码(2023年9月)
使用超声波传感器和舵机实现迎宾机器人的眼睛和手的功能。大门位于超声波传感器前方15厘米的位置,大门内侧5-15厘米范围为欢送区,外侧15-25厘范围为欢迎区。LED_A位于欢送区,LED_B位于欢迎区,舵机则位于大门处,机器人的主要任务如下:(1)没有客人进出时,舵机位于90度位置,LED_A和LED_B均熄灭;(2)客人经过欢送区时,舵机在30-90度之间循环转动,LED_A闪烁,LED_B均熄灭;(3)客人经过欢迎区时,舵机在90-150度之间循环转动,LED_B闪烁,LED_A均熄灭。原创 2023-09-23 22:46:07 · 1709 阅读 · 2 评论 -
【c++】建模分析《山歌寥哉》之《花妖》为什么是悲剧?
自从刀郎发行了《山歌寥哉》专辑之后,引爆全网。继《罗刹海市》之后,《花妖》又成为新的热点。歌词讲述了一个一对男女相恋无果,双双殉情后转世却错寻了罗盘经,空间上虽投胎在同一地点,时间上却相差了千年,后又辗转多世仍不能相遇,最后只能永远错过的悲剧爱情故事。本人借助数学建模的方法计算出女主等不到男主的概率仅为0.58%,而这么低的概率还是发生了,这就是《花妖》之所以称为悲剧的原因。原创 2023-09-19 23:51:28 · 256 阅读 · 0 评论 -
【Python】利用python-docx生成word版本学生花名册
可以用python创建word文档,生成一个学生的花名册。生成的过程:先下载第三方依赖包,安装依赖包,然后引入依赖文件,创建docx文件,添加标题,创建表头,创建表格正文,居中填写表头内容、项目行、表格正文。原创 2023-08-30 16:54:54 · 562 阅读 · 0 评论 -
【C++】做一个飞机空战小游戏(十二)——游戏源代码、音效、图标等资源文件
本节简单介绍一下本游戏中的音效下载网站、音效处理软件,图标生成方法、ico插件链接等资源,并将最终源代码上传。原创 2023-08-21 13:50:18 · 606 阅读 · 0 评论 -
【C++】做一个飞机空战小游戏(十一)——游戏过关、通关、结束的设置
本节介绍游戏的过关、通关和游戏结束(game over)的相关设置。过关的依据是敌方死亡炮弹的数量,当达到设定数目时,即可通过这一关,当通过最后一关时,即完成通关,如果还未通关时,所有飞机的命已经没了,那游戏就结束了。每一关敌方每波炮弹数量、每关总死亡炮弹数量、炮弹移动速度、炮弹血量、炮弹伤害值都是不一样的,是随着关数的增加而递增的,也就是游戏过关的难度越来越高。本节还实现了游戏信息显示、爆炸音效、飞机开火音效、控制台窗口大小设置等功能。原创 2023-08-21 01:27:39 · 555 阅读 · 0 评论 -
【C++】做一个飞机空战小游戏(十)——子弹击落炮弹、炮弹与飞机相撞
今天这节介绍实现子弹击落炮弹、炮弹与飞机相撞的效果,增加了飞机的血量属性,炮弹撞击一次掉血三分之一,三次撞击则飞机被炮弹击落。还增加了飞机命数属性,飞机设置了3条命,飞机命数大于0的时候可以按复活键进行复活,如果命为0时,飞机不可复活。还增加了游戏暂停功能,按空格键游戏暂停,再按一次即可恢复游戏。原创 2023-08-19 19:27:39 · 1290 阅读 · 1 评论 -
【C++】做一个飞机空战小游戏(九)——发射子弹的编程技巧
本节主要介绍了飞机发射子弹的实现方法,主要从死亡期间位置、飞机开火后子弹的初始位置、开火后子弹出现的时间、子弹数组的存放技巧、子弹的飞行方向等五个方面进行了介绍。原创 2023-08-18 22:12:01 · 877 阅读 · 1 评论 -
【C++】做一个飞机空战小游戏(八)——生成敌方炮弹(rand()和srand()函数应用)
本讲介绍如何实现敌方炮弹生成,主要用到了rand()函数搭配srand()函数。除了实现炮弹的x坐标随机化外,还采用了死亡恢复时间随机化的方法,实现了炮弹y坐标的随机化。原创 2023-08-15 23:37:32 · 411 阅读 · 0 评论 -
【C++】做一个飞机空战小游戏(七)——两组按键同时检测平滑移动(GetAsyncKeyState()函数应用)
利用getch()函数可以实现键盘控制两组方向键控制两个不同颜色、造型的飞机移动,但是实际测试过程中发现,两组方向键盘会相互影响,不能实现两组方向键长按指令,而且移动有卡顿,不平滑。经过查询资料,发现可以利用windows自带的GetAsyncKeyState()函数实现可以同时检测两组按键,并且移动比较平滑。原创 2023-08-13 13:19:53 · 913 阅读 · 0 评论 -
【C++】做一个飞机空战小游戏(六)——给两架飞机设置不同颜色(cout输出彩色字符、结构体使用技巧)
随着程序设计的深入,飞机的属性越来越多,就需要构造飞机的结构体,把各项属性都放到飞机结构体中。这样,可以减少声明变量的个数,减少自定义函数的形参。使程序的逻辑性更清晰,代码量更少。本文实现了飞机设置不同颜色,不同造型。将获取按键指令单开了一个线程。原创 2023-08-07 22:47:27 · 693 阅读 · 0 评论 -
【C++】做一个飞机空战小游戏(五)——getch()控制两个飞机图标移动(控制光标位置)
通过控制光标把光标直接移动到要显示飞机图标的位置,可以避免了频繁输出换行和空格的操作,不会对屏幕上其他的图标产生影响,也消除了光标闪烁的情况。原创 2023-08-05 13:25:25 · 536 阅读 · 0 评论 -
【C++】做一个飞机空战小游戏(四)——给游戏添加背景音乐(多线程技巧应用)
本文介绍了线程创建的步骤,以及播放音频的方法,在此基础上,编写了在主程序中创建了循环播放游戏背景音乐的线程,实现了通过按键控制飞机移动和背景音乐循环播放同时进行的功能。原创 2023-08-05 00:02:16 · 1377 阅读 · 3 评论 -
【c++】rand()随机函数的应用(二)——舒尔特方格数字的生成
本例提出了一种新的方法实现不同维数舒尔特方格的生成方法,需要用到rand()、srand()函数,在算法上采用动态取模方法。原创 2023-08-03 18:18:21 · 971 阅读 · 0 评论 -
【c++】rand()随机函数的应用(一)——rand()函数详解和实例
c++语言中可以用rand()函数生成随机数,今天来探讨一下rand()函数的基本用法和实际应用。本系列文章共分两讲,今天主要介绍一下伪随机数生成的原理,以及在伪随机数生成的基础上,生成随机数的技巧,下一讲主要介绍无重复随机数生成的方法和舒尔特方格数字生成的实例。本文采用循序渐进的方式逐步介绍,并且贴上了实际测试的代码和结果。有不详和不实之处,请各位大神批评指正。原创 2023-08-02 22:39:54 · 16586 阅读 · 2 评论 -
【C++】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动
模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计方法。本例程采用模块化设计,重新优化了键盘控制飞机图标移动的初步程序,程序主体由5个功能模块组成:初始化、清屏、显示飞机图标、获取键盘指令、计算飞机新的坐标。本例程自定义了功能函数库和头文件,头文件中还采用了枚举和结构体数据类型,也采用了外部全局变量。原创 2023-07-30 20:49:21 · 1002 阅读 · 0 评论 -
【C语言】利用队列的思维理解移位运算符和移位函数
在c语言中,尤其是单片机的C51中,移位运算操作很常见。实现移位操作的方法有两种:一是利用移位运算符,二是利用移位函数。移位运算符,是系统内置的运算操作,编译编译不用包含相关头文件;而移位函数编译要包含intrins.h头文件。移位运算符操作,移除位后舍弃,循环移位函数移出位后不舍弃,而是从另一端补位进来。原创 2022-10-14 09:39:12 · 5050 阅读 · 9 评论 -
工业动画制作过程介绍(二)——两张静态简笔画生成动画
在文章《工业动画制作过程介绍(一)——静态简笔图画的制作》中介绍了如何将一张机械照片转化为简笔画的过程,今天介绍把第二张机械图片转化为简笔画的过程,并且把两张简笔画形成一个动画的过程。原创 2022-10-13 22:26:46 · 983 阅读 · 3 评论 -
Keil+T5L智能屏——让单片机图形化界面开发变得如此简单
用单片机做过嵌入式开发的朋友应该都深有体会,与后台的控制算法相比,前台的图形化界面开发也占了很大一部分精力。嵌入式的图形化开发,最好能借助第三方的软硬件相结合的智能屏,界面的设计由组态软件来实现,界面留有和后台c程序交互的接口,这样我们就可以借助第三方的力量,快速完成界面设计,从而把更多的精力留在后台的控制程序上。前些天小编接触到一款T5L迪文智慧屏,刚开始用,效果如何不予评论,不为某产品站台,也不刻意抹去人家的名姓,只把实现步骤做一介绍。原创 2022-10-12 23:25:49 · 6496 阅读 · 6 评论 -
STM32F4单片机读取AT24c02
本例是stm32f407读写AT24C02的操作。AT24C02是单独的一个芯片,用于存放擦除次数较多的数据读写。AT24C02支持I2C总线数据传送协议。AT24C02这种EEPROM不能用来存程序,通常单片机的指令寻址不能到这个区域。EEPROM的擦写次数应有百万次,而且可以按字节擦写。EEPROM在一个PAGE内是可以任意写的,可以按字节擦除。所以,如果有频繁的擦除需求,比如要记录某个实时变化的数据,那么就需要把数据存到EEPROM中。原创 2022-10-11 23:27:28 · 1943 阅读 · 4 评论 -
STM32F407读取ID号+加密+验证+验证失败自宫
每一片单片机的id号是全球唯一的,在单片机第一次运行程序的时候,把单片机id号读出来,再进行加密,把加密后的内容烧写到程序区的空白处,和程序混合在一起。这样单片机里的程序其实已经融合了单片机的id号,是绑定了这个id号的单片机专用程序。在主程序的某些地方加入验证程序,验证读取到的id号加密后和加密区的内容是否一致,如果一致,说明程序是单片机的原程序,如果不一致,说明这个程序是从别的单片机复制过来的。我们再加入自宫程序,就是验证出不是单片机原程序,那就执行擦除代码区的指令。原创 2022-10-09 23:48:15 · 4059 阅读 · 9 评论 -
利用环形数组实现单部电梯选层控制算法
电梯自动化控制系统已经成为计算机技术应用领域中的相当重要的一个分支。为适应电梯的安全性、可靠性和功能灵活性等需求,系统多以微型计算机为核心。这种系统是将计算机技术、自动控制技术、通信技术以及转换技术高度整合的体系。电梯是楼宇自动化中重要的一部分,那么对于电梯楼层的控制算法是电梯运行的核心部分。那么今天介绍的是电梯自动控制中最基本的单部电梯楼层控制算法,这种算法运用环形队列的思想予以实现。电梯楼层控制,是指乘客按下按键后,电梯按照一定响应顺序来移动电梯完成乘客的运送需求。原创 2022-10-08 18:24:56 · 1395 阅读 · 2 评论 -
Android 从txt文件读数据生成曲线图
在app监测系统中,经常要查看监测曲线,那么曲线怎么生成呢?可以用Android自带的来实现这个功能graphics。今天这个例程,先简化一下功能,从txt读取数据,来模拟从服务器上读取数据。txt文件里的数据是y值,x值为时间,间隔一致。生成的图如图1所示,曲线图中包含了x、y坐标轴,x、y轴物理量标签、箭头和分格值,以及y随时间的曲线。下边来进行介绍具体的操作步骤。原创 2022-10-06 22:46:12 · 1355 阅读 · 1 评论 -
Android+CS6:工业动画之变速变方向旋转齿轮
用一幅齿轮原图,ps生成旋转角度为120°的三幅齿轮图。用Android编程,点顺时针按钮时形成顺时针旋转效果,点逆时针旋转按钮,形成逆时针旋转效果。按加速按钮,齿轮旋转速度变快,按减速按钮,齿轮速度变慢。本文还给出了为什么采用3张图和3张图旋转角度的分析过程。原创 2022-10-05 00:41:49 · 995 阅读 · 1 评论 -
用Python统计居民消费支出情况
以2019年北京、上海、广州三城市在居民消费支出数据为例,利用Python分析了消费结构支出情况,包括食品烟酒、衣着、居住、生活用品及服务、交通通信、教育文化娱乐、医疗保健、其他用品及服务等几方面。使用的分析形式有并列柱状图、饼状图两种。原创 2022-10-02 12:45:40 · 2447 阅读 · 5 评论 -
python柱状图、直方图和饼状图统计学生成绩
Python的matplotlib库具有很强大的绘图功能,可以利用这个库函数来进行学生成绩统计。假如有一个班的某科学生成绩如表1所示,可以用柱状图、直方图和饼状图三种方式来进行统计分析。下边介绍一下操作步骤。原创 2022-10-02 12:13:34 · 10219 阅读 · 3 评论 -
时序数据库TSDB逐日统计的Jave算法实现过程
在文章《时序数据库TSDB按时间进行数量统计算法研究》中,给出了对存入TSDB的数据逐日进行统计的算法。今天介绍一下算法的具体实现代码(java):注意,本本中用到的tsdb的数据查询操作见文章《物联网平台搭建的全过程介绍(六)——物联网TSDB之基本知识及读写代码介绍》和《阿里云TSDB如何获取metric设定时间段内最早的value值?》原创 2022-09-29 07:24:20 · 1560 阅读 · 0 评论 -
时序数据库TSDB按时间进行数量统计算法研究
时序数据库(TSDB)存入的数据都是按时间进行排列的,那么如果数据是计数类型的,也就是随着时间的增长,这个数字会一直增加,那么就可以按时间对这个数据进行统计。工厂生产产品的数量就是计数类型,下边以此为例,介绍一下这类数据的统计问题。那么计数类型数据统计有两种基本的方式:第一,按截止时间统计,也就是截止时间之前那个时间点的数据,这个数据是从开始生产到截止时间的总产量,是每天产量的累加值;第二,按一定时间区间统计,比如按天统计,就是每天生产的数量。原创 2022-09-18 21:25:25 · 719 阅读 · 0 评论 -
利用干支年反推公元年份的计算公式推导
干支纪年,是指中国纪年历法,自上古以来就一直使用的纪年方法。干支是天干和地支的总称。把干支顺序相配正好六十为一周,周而复始,循环记录,这就是俗称的“干支表”。干支纪年与公元纪年可以相互转换。公元年转化为干支年比较好算,干支年转化为公元年目前的流行方法是查表法,先根据干支,查出在干支表中所出的年次,再根据干支年和公元年的关系推算公元年?原创 2022-09-12 12:22:35 · 3472 阅读 · 4 评论 -
用列表法分析1500年前南北朝时期的“奥数”题
偶然发现一道小学奥数题,题目如下:老师给全班同学排队,每3个人站一排,最后一排只有2个人;每5个人站一排,最后一排为3个人;每7个人站一排,最后一排为2个人,请问全班多少名同学?此题看似一般,但经查阅,却极有渊源,原来出自《孙子算经》。此题解法见《孙子歌诀》:三人同行七十稀,五树梅花廿一支,七子团圆正半月,除百零五使得知。本文用列表法分析了此题的求解奥妙。原创 2022-09-08 20:15:25 · 733 阅读 · 0 评论