笔记
文章平均质量分 78
大唐不良猿
开始,继续
展开
-
第80篇 C++实现未知假币重量的假币问题(二)二分法
第80篇 C++实现未知假币重量的假币问题(二)二分法1.假币问题描述2.二分法实现思路1.假币问题描述在n枚外观相同的硬币中,有一枚硬币是假币,但是不知道假币的重量是较重还是较轻,请设计算法找出这枚假币。2.二分法实现思路(1)思路比较简单,反正就是分成两堆,但是我感觉怎么像四分法一样,不过确实是二分的。(2)分成两堆A和B,如果两堆重量相等,则有可能有两种情况,第一种情况是没有假币(如硬币数量是偶数,则没有假币),第二种是两堆都有假币,但是假币的位置是唯一的(如n是奇数5:1 1 2 1 1,原创 2021-11-22 19:28:00 · 1568 阅读 · 0 评论 -
第79篇 C++实现未知假币重量的假币问题(一)三分法
第79篇 C++三分法实现未知假币重量的假币问题1.假币问题描述2.三分法实现思路3.代码实现4.结语1.假币问题描述在n枚外观相同的硬币中,有一枚硬币是假币,但是不知道假币的重量是较重还是较轻,请设计算法找出这枚假币。2.三分法实现思路(1)在n枚硬币中只有一枚是假币,且未知假币重量。(2)把假币分成A,M,B三堆,确保第一堆A和第三堆B的硬币数量是相同(相等)的。用model记录真币。(3)称第一堆A的重量为sumA,第三堆B的重量为sumB,如果sumA和sumB是相等的,真币为model原创 2021-11-22 15:27:48 · 6465 阅读 · 0 评论 -
第78篇 C++实现字符串匹配(三)KMP算法
第78篇 C++字符串匹配(三)KMP算法1.KMP算法简单描述2.自解next3.原next4.改进next5.KMP代码5.1.原KMP5.2.改进KMP6.所有代码1.KMP算法简单描述首先上大佬的链接数据结构KMP算法配图详解(超详细)虽然别人写得很好,但是我还是想尝试一下自己能理解多少,所以写一写自己的看法,看看自己能不能把这个算法表述得明白。KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操原创 2021-11-21 18:45:50 · 5350 阅读 · 0 评论 -
第77篇 C++实现字符串匹配(二)RK算法
第76篇 C++实现字符串匹配(二)RK算法1.RK简单描述2.代码解说3.结语1.RK简单描述这是由Rabin和Karp提出的字符串匹配(检索)算法,即称RK算法。RK算法的基本思想是按字符串的Hash值查找,即:计算出两个字符串的Hash值,如果两个字符串hash的值不相同,则它们肯定不相同,已经没有去比较字符串内容的必要,如果它们hash后的值相同,它们不一定相同,但是可以通过比较内容去确定两个字符串是否相同。RK算法的基本思想就是:将目标字符串target的hash值跟主串mainStrin原创 2021-11-18 22:02:10 · 893 阅读 · 2 评论 -
第76篇 C++实现字符串匹配(一)BF算法
第76篇 c++实现字符串匹配(一)BF算法1.BF算法简单描述2.代码实现3.另外说明4.结语1.BF算法简单描述Stringmatching,字符串匹配,可以看成在数组中查找值,区别在于是在串中找另一个串,那么就得一一匹配串里面的每一个字符是否都相等,最简单的方法就是一个一个去匹配。从主串第一个字符开始,子串也从第一个开始,两个串都往后依次匹配,当子串某个字符匹配不成功,就将主串回溯到第二位,子串回到第一位,如此反复匹配,直到匹配成功或者到达主串剩余长度小于子串长度为止,成功就返回此次匹配成功的第原创 2021-11-17 22:27:17 · 2260 阅读 · 0 评论 -
第55篇 Qt获取Widget窗体子控件-小案例说明
第55篇 Qt获取Widget窗体子控件-小案例说明1.帮助文档里的函数说明2.案例2.1.打开头文件创建函数2.2.对按钮初始化及界面布局2.3.结果我觉得添加一个按钮要在类里面添加一个变量,这实在是太麻烦了,就想自己在局部函数里面添加,然后通过父窗口名称获取之类的,首先我想到的是打下this->,然后看看后面接什么函数,第一找到的是childAt(),其实这个可以用的,只是在以些其他地方的初始化上有点不友好,没有去研究了,直接网上查找,终于看到了findChild();1.帮助文档里的函数说明原创 2021-10-22 11:00:45 · 3313 阅读 · 0 评论 -
第23篇 Android Studio第一个程序HelloWorld
第23篇 Android Studio第一个程序HelloWorld1.Android Studio安装及其相关配置2.手机模拟器的安装3.手机运行4.hello world4.1.选择创建一个空项目4.2.一些设置4.3.了解一些文件4.3.1.manifests文件夹4.3.2.java文件夹4.3.3资源文件夹res4.4.主题4.5.补充1.Android Studio安装及其相关配置博客里面有很多博文,随便搜搜就有了。安装教程第二篇挺详细,但有些是没有必要的,所以自己筛选。第二篇安装教程原创 2021-09-26 21:08:53 · 410 阅读 · 0 评论 -
第22篇 Qt实现简单五子棋游戏(六)测试
第22篇 Qt实现简单五子棋游戏(六)测试1.界面效果1.1.简单双人对战模式测试(进入默认,也可自选)1.2.帮助1.3.悔棋1.4.小功能选择1.5.总结1.界面效果因为棋盘是固定的,所以放大之后不会改变,所以索性可以把界面锁死,不能放大与缩小,这样就比较好,而且不用再担心图片与界面不匹配的问题。直接按设定的屏幕大小画上去。1.1.简单双人对战模式测试(进入默认,也可自选)可以判断输赢。感觉优化了,反而又觉得没有以前的有感觉,好像还有bug,就是没有那种感觉了,去下以前的版本反而更有感觉。原创 2021-09-13 13:46:06 · 444 阅读 · 1 评论 -
第21篇 Qt实现简单五子棋游戏(五)系统(界面)类编码
第21篇 Qt实现简单五子棋游戏(五)系统(界面)类编码3.系统(界面)类3.1.头文件3.2.源文件3.系统(界面)类之所以有两个名字,是因为这个类本身是界面的,但是我们又用它来作为判断棋子,操作棋盘的=,所以可以叫为“系统”吧,因为那些操作不是界面来做的,而是由“幕后黑手”来做的,但是由不想再写一个了,已经够用了,所以就将就将就了。3.1.头文件看着很长很多啊。因为自从学会了布局之后,就再也不想用设计器布局了,代码布局也挺方便的,所以按钮都作为属性变量了,有些没用的就不需要加进来,还有一些头文件原创 2021-09-13 13:02:01 · 533 阅读 · 0 评论 -
第20篇 Qt实现简单五子棋游戏(四)棋盘类编码
第20篇 Qt实现简单五子棋游戏(四)棋盘类编码2.棋盘类2.1.头文件2.2.源文件2.棋盘类本身来说棋盘作为一个个体很重要,之前没有设计棋盘类的时候,要添加很多变量来表示棋盘上的一些东西,比如很重要得是表示棋盘的数组,这个可以作为棋盘的一个属性来说明,这样我们用它来判断的时候就很好的知道怎么调用,调用谁的了。2.1.头文件没有什么过多得变量说明,只是一些函数看起来多,虽然变量少,但是其中涉及了一些操作,所以函数方法多了。#ifndef CHESSBOARD_H#define CHESSBOA原创 2021-09-13 12:47:14 · 424 阅读 · 0 评论 -
第19篇 Qt实现简单五子棋游戏(三)棋子类编码
第19篇 Qt实现简单五子棋游戏(三)棋子类编码1.棋子类1.1.头文件1.2.源文件1.棋子类使用面向对象的方法不仅使得一些变量名正言顺,就是使变量有自己的归宿,而不是孤零零的躺在外面,用的什么也不知道是什么地方的,使用面向对象,可以明确知道这个是谁的属性,要从哪里得到它。1.1.头文件这里值得说明的是拷贝构造函数,不写的话会有问题。我们要在处理棋子的时候添加棋子到储存棋子的数组里,涉及到拷贝构造,如果不写的话它会有错误,认为默认是被删除的,所以添加进去的棋子数据应该是不存在了,自己重写一个才行原创 2021-09-13 12:25:07 · 309 阅读 · 0 评论 -
第18篇 Qt实现简单五子棋游戏(二)算法说明
第18篇 Qt实现简单五子棋(二)算法说明5.算法说明5.1.画棋盘: void drawChessboard();5.2.画棋子:void drawChess();5.3.鼠标点击响应:void mousePressEvent(QMouseEvent* mevent);5.4.处理棋子:void handleChess(int current_x,int current_y);5.5.判断是否赢了:bool isWin(int x,int y,int chesscolor);5.6.获取电脑落子位置:bo原创 2021-09-13 11:13:57 · 1051 阅读 · 0 评论 -
第17篇 Qt实现简单五子棋游戏(一)文档说明
第17篇 Qt实现简单五子棋(一)文档说明1.需求分析1.1.人机对战1.2.双人对战1.3.判断输赢1.4.获取人机落子位置1.5.破解三角阵1.6.悔棋功能1.7.其他说明2.棋子类Chess设计2.1.属性2.2.方法3.棋盘类ChessBoard设计3.1.属性3.2.方法4.系统(界面)类Interface设计4.1属性4.1.1.界面属性4.1.2.功能属性4.2.方法4.2.1.初始化界面属性:void initData();4.2.2.界面布局函数: void mySetlayout();4原创 2021-09-13 10:19:20 · 1875 阅读 · 1 评论 -
第16篇 Qt实现简单音乐播放器(三)
第16篇 Qt实现简单音乐播放器(三)1.音乐文件读取2.一小点美化3.效果4.代码4.1.源文件1.音乐文件读取路径是本地文件路径,找个地方把音乐存起来。从目录中读取后缀为.mp3的文件,保存到QStringList,然后把内容加入到列表中。void MusicPlaying::readMusicfile(){ musicpath = "D:/Qt/MyQt4/mymusic"; QDir dir(musicpath); QStringList nameFileters;原创 2021-08-08 13:37:01 · 1112 阅读 · 0 评论 -
第15篇 Qt实现简单音乐播放器(二)
第15篇 Qt实现简单音乐播放器(二)1.实现播放1.1.各个槽函数1.1.1.播放者player1.1.2.音乐列表musiclistWidget1.1.3.时间进度timeprogress1.1.4.上一首lastsong1.1.5.暂停、播放playpause1.1.6.下一首nextsong1.1.7.音量进度volumeprogress2.结语1.实现播放#include <QMediaPlayer>为了能够实现播放音乐,那么我们要加入这个头问件,而加入这个头文件,要得在项目文原创 2021-08-08 11:40:47 · 1677 阅读 · 1 评论 -
第14篇 Qt实现简单音乐播放器(一)
第14篇 Qt实现简单音乐播放器(一)1.目标实现1.1.界面1.2.实现上一首、暂停、下一首1.3.界面布局2.头文件2.2.代码布局2.2.说明1.目标实现其实关于音乐播放器的博文有很多,我只是按自己的方式去体现出来,想把自己写的代码记下来而已。1.1.界面至少实现如下界面。1.2.实现上一首、暂停、下一首我们可以播放很多首音乐,然后可以想听什么歌选择什么歌、还可以暂停。1.3.界面布局个人比较喜欢用代码布局,这样就不考虑拖的时候弄歪了,然后强迫症在那调来调去,当然界面布局也有布局方式原创 2021-08-08 10:42:08 · 1865 阅读 · 0 评论 -
第13篇 Qt实现安装向导对话框之设计器布局篇(二)
第13篇 Qt实现安装向导对话框之设计器布局篇(二)1.界面设计2.代码2.2.第一个界面2.2.第二个界面2.3.第三个界面2.4.第四个界面3.源文件1.界面设计我觉得界面布局这一块应该不用多说什么了,东西都给出来了,看着搬就行了,一步步去贴出来,实在没有必要的;唯一值得注意的是第四个页面,其中插入的是页面,看图;插入的依然是QStackWidget;只是我们不再使用QListWidget,而是使用它自带的页面,黑色箭头是可以交换页面的,还有如果你想减少一个页面或者增加一个页面,只需点击鼠标右键原创 2021-08-01 18:03:43 · 228 阅读 · 0 评论 -
第12篇 Qt实现安装向导对话框之设计器布局篇(一)
第12篇 Qt实现安装向导对话框之设计器布局篇(一)1.如何使用自己新建的ui文件1.1.创建.ui文件1.2.使用.ui文件1.如何使用自己新建的ui文件1.1.创建.ui文件右键点击项目名称或者项目下的文件加,点击添加新文件,选择Qt->Qt Desiger From,选择Widget,下一步填写相应的文件名。然后会看到相应的.ui文件,编译之后会生成相应的头文件,这个头文件你在哪可以看到呢,没错,就是在项目编译后生成的文件夹里。看到这张图我觉得你应该知道是在哪里了吧,不多说了。1原创 2021-08-01 16:52:33 · 350 阅读 · 0 评论 -
第11篇 Qt实现安装向导对话框之代码布局篇(四)
第11篇 Qt实现安装向导对话框之代码布局篇(四)1.源文件分段解说1.7.第四个页面创建函数1.8.文件夹及文件的遍历函数1.9.槽函数2.源文件1.源文件分段解说1.7.第四个页面创建函数void Widget::createPage_four(){ this->page_four = new QWizardPage; this->page_four->setSubTitle("激活"); QGridLayout* glayout = new QGrid原创 2021-07-20 10:55:03 · 491 阅读 · 0 评论 -
第10篇 Qt实现安装向导对话框之代码布局篇(三)
第10篇 Qt实现安装向导对话框之代码布局篇(三)1.源文件分段解说1.1.主窗口类的构造函数1.2.创建安装向导对话框界面函数1.3.第一个页面创建函数1.4.第二个页面创建函数1.5.第三个页面创建函数1.6.代码布局小心得1.源文件分段解说1.1.主窗口类的构造函数Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); this-&原创 2021-07-20 10:07:57 · 581 阅读 · 0 评论 -
第9篇 Qt实现安装向导对话框之代码布局篇(二)
第9篇 Qt实现安装向导对话框之代码布局篇(二)1.头文件1.1.加入头文件说明2.简单的布局方式简说2.1.水平布局QHBoxLayout2.2.垂直布局QVBoxLayout2.3.网格布局(栅格布局)QGridLayout1.头文件首先说明一下,我是通过在一个窗口中添加一个按钮,然后通过点击按钮显示出来,所以安装向导对话框并不是主窗口。先看看头文件里的东西吧。#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include原创 2021-07-19 22:44:57 · 485 阅读 · 0 评论 -
第8篇 Qt实现安装向导对话框之代码布局篇(一)
第8篇 Qt实现安装向导对话框之代码布局篇(一)1.需求1.1.第一个界面1.2.第二个界面1.3.第三个界面1.4.第四个界面2.分析1.需求安装向导对话框就是实现模拟一个安装过程,如下列图所示:1.1.第一个界面第一个界面要求要点击勾选同意才可以点击下一步,否则下一步不可点击。1.2.第二个界面第二个界面的要求是点击安装位置,弹出文件对话框,选择安装路径,选择好后所选择的安装路径显示在文本框中。1.3.第三个界面第三个界面的要求是根据上一个界面所选择的路径,遍历该路径下所有文件和文件夹,原创 2021-07-19 21:55:06 · 846 阅读 · 0 评论 -
第7篇 Qt实现十字路口交通灯控制系统(六)
第七篇 Qt实现十字路口交通灯控制系统(六)1.最终效果2.相关问题解决2.1.信号与槽问题2.2.线程问题2.3.转弯问题2.4.静态变量与静态函数3.bug4.结语1.最终效果以下就是我设计出来的效果,没有录视频,就先这样了:2.相关问题解决2.1.信号与槽问题(1)用到信号和槽机制的类一定要有QObject这个基类(2)关联方式QObject::connect(发出者,SIGNAL(信号),接收者,SLOT(槽));发出者和接收者都是地址,如Car *car1;Car car2;这原创 2021-07-07 09:37:37 · 862 阅读 · 3 评论 -
第6篇 Qt实现十字路口交通灯控制系统(五)
第六篇 Qt实现十字路口交通灯控制系统(五)1.最后一个类地图类(界面)Map1.1.宏常量1.2.属性1.3.操作1.4.槽1.5.头文件1.6.源文件2.结语1.最后一个类地图类(界面)Map1.1.宏常量主要用于画图时设置的数据。#define mainGrassWidth 270#define mianGrassHeight 170#define vertilGrassWidth 40#define vertilGrassHeight 170#define transverseGra原创 2021-07-06 23:13:53 · 1331 阅读 · 28 评论 -
第5篇 Qt实现十字路口交通灯控制系统(四)
第五篇 Qt实现十字路口交通灯控制系统(四)1.主角车类Car1.1.宏常量1.2.属性1.3.操作1.4.信号1.5.头文件1.6.源文件2.车的控制类ControlCar2.1.操作2.2.信号2.3.头文件2.4.源文件3.结语1.主角车类Car车是这个系统的主角,怎么去实现每隔一段时间车辆该不该走,或者是每隔一段时间就移动一段距离呢?这也用到了线程,即这个车类也继承了QThread类,这样的话车辆在生成之后,每隔一段时间就自己去判断自己该不该走或者什么时候转弯,什么时候等待前面的车辆。具体方法在原创 2021-07-06 18:25:22 · 1206 阅读 · 0 评论 -
第4篇 Qt实现十字路口交通灯控制系统(三)
第四篇 Qt实现十字路口交通灯控制系统(三)1.灯控制类LampControl1.1.属性1.2.操作1.3.信号1.4.头文件1.5.源文件2.结语1.灯控制类LampControl这里要先说一下这个控制是怎么实现的,我们的目的在于:在整个程序运行的过程中,让时间按秒递减,当时间为零时,更换灯的状态,且更换绿灯的显示位置,或者更换要控制的灯组,且每一秒向界面发送重绘请求信号,以达到可以看到倒计时的目的。因此,我们用线程来实现这个目的,至于什么是线程,Qt中线程类是怎样的,我也不大清楚,想更清楚的话去原创 2021-07-06 16:47:02 · 959 阅读 · 0 评论 -
第3篇 Qt实现十字路口交通灯控制系统(二)
第二篇 Qt实现十字路口交通灯控制系统(二)1.系统最简单的类Lamp1.1属性1.2 操作1.系统最简单的类Lamp灯类Lamp是交通系统中最简单的类,可以说它没有和其他类进行交互,即信号传递处理等,就是一个普通的C++类,没有基类。1.1属性(1)位置,x,y位置由两个整型变量x,y表示,即int x,y;主要在绘制灯的时候用到(2)状态,status1.2 操作...原创 2021-07-06 15:21:35 · 704 阅读 · 0 评论 -
第2篇 Qt实现十字路口交通灯控制系统(一)
第二篇 Qt实现十字路口交通灯控制系统(一)1.项目需求2.分析设计结语1.项目需求1.1.并发生成按照各个路线行驶的车辆一个十字路口总的有12个方向,即十二条路线,要随机生成每个方向上行驶的车辆,而且要并发生成,即在一小段时间差内,可以生成各个方向上的车辆。1.2.信号灯设置信号灯忽略黄灯,只考虑红灯和绿灯。具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑。南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆而后放行左转车辆。1.3.车辆经过路口设置原创 2021-07-06 13:53:20 · 1942 阅读 · 2 评论 -
第1篇 2020蓝桥杯试题C蛇形填数
第一篇 2020蓝桥杯试题C蛇形填数1.题目2.理解3.for循环实现1.算法2.代码4.递归实现求解1.算法2.代码5.结语1.题目这个题目意思就是,按照这个蛇形把数字一一填出来,然后找出第20行第20列的数是多少。2.理解其实我也没有多少经验,首先想到的是,声明一个20*20的二维数组,然后把数字从1开始填进去,但是后来发现麻烦了。然后我就在纸上画图,进行对比。那么我可以发现,n行n列对应的数字为不难发现,5 = 1 + 4 * 1;13 = 5 + 4 * 2;25 = 13 + 4原创 2021-05-22 09:46:33 · 521 阅读 · 0 评论