<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[appup的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/appup</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; appup]]></copyright><item><title><![CDATA[在线安装Qt(全网最详细图文版)--以Qt5.15.2 Windows版为例]]></title><link>https://blog.csdn.net/appup/article/details/132367320</link><guid>https://blog.csdn.net/appup/article/details/132367320</guid><author>appup</author><pubDate>Fri, 18 Aug 2023 18:53:29 +0800</pubDate><description><![CDATA[接触几年Qt有余，发现部分开发人员对Qt的认识远远不够，仅仅停留在表面。甚至有较少部分人认为Qt是一种开发编程语言或者将QTCreator当做Qt，这些理解都是错误的且过于片面。实际上来说，QT是利用C++语言编写一个跨平台应用开发的框架。Qt框架中包含大量的类，支持GUi、数据库、计算机网络、音视频处理、多线程等各类应用编程。使用Qt可以为计算机、服务器、移动设备等开发各种应用，尤其在图形用户界面程序中其作用不言而喻。]]></description><category></category></item><item><title><![CDATA[QT翻金币小游戏实现（三）]]></title><link>https://blog.csdn.net/appup/article/details/116863027</link><guid>https://blog.csdn.net/appup/article/details/116863027</guid><author>appup</author><pubDate>Sat, 15 May 2021 22:29:52 +0800</pubDate><description><![CDATA[4、创建翻金币场景
设计好主场景以及选择关卡界面以后，就来到了最重要的一环：翻金币。首先还是创建一个cpp文件命名为PlayScene。第一步在选择关卡中声明PlayScene *pScene = NULL;方便后面使用。点击选择某一关卡按钮以后会跳入该场景，此时该场景需要显示出来，来选择关卡界面需要隐藏。第二步就是注视掉原来PlayScene.h中的构造函数，自己重回写一个构造函数，并写一个成员变量用于记录所选择的关卡数，具体的代码与结果如下：
//进入到了游戏场景
           this-&gt]]></description><category></category></item><item><title><![CDATA[QT翻金币小游戏实现（二）]]></title><link>https://blog.csdn.net/appup/article/details/116781088</link><guid>https://blog.csdn.net/appup/article/details/116781088</guid><author>appup</author><pubDate>Sat, 15 May 2021 20:59:51 +0800</pubDate><description><![CDATA[3、选择关卡场景的配置
前面的步骤做好以后，就需要来到选择关卡界面。t添加C++文件，新建一个类名为ChooseLevelScene，基类为QMainWindow的文件， 这里建立QMainWindow文件是需要与前面主场景界面相同。在chooselevelScene.h文件中新建一个选择关卡场景的对象。然后就是设置延时0.5s进入选择关卡页面。具体的做法是：
connect(startBtn,&amp;MyPushButton::clicked,[=](){
        startSound-&gt;]]></description><category></category></item><item><title><![CDATA[QT翻金币小游戏实现（一）]]></title><link>https://blog.csdn.net/appup/article/details/116766484</link><guid>https://blog.csdn.net/appup/article/details/116766484</guid><author>appup</author><pubDate>Thu, 13 May 2021 22:11:49 +0800</pubDate><description><![CDATA[1、项目的基本配置
创建Qt项目，选择基类为MianWindow并勾选创建界面，点击完成，项目创建成功。接着添加资源文件，主要包括：开始、返回、背景等的图片以及相应的音效等，添加资源的具体步骤较为简单，这里就不赘述。
2、游戏的主场景的配置
打开.ui文件，创建*“开始”菜单栏，以及它的子项“退出”*，并删除自带的工具栏与状态栏，因为后序步骤用不到的。
创建的结果如下：

接着，回到主场景的.cpp文件，创建主场景的大小、图标以及窗口的标题。代码及结果如下：
    this-&gt;setFixedSiz]]></description><category></category></item><item><title><![CDATA[在vs2013下安装MSDN]]></title><link>https://blog.csdn.net/appup/article/details/115937664</link><guid>https://blog.csdn.net/appup/article/details/115937664</guid><author>appup</author><pubDate>Wed, 21 Apr 2021 11:00:35 +0800</pubDate><description><![CDATA[情况说明
最近几天由于学习Win32需要用到MSDN，然后去网上自行安装，但是发现好多的安装教程并不是很完整，并没有找到适合自己的。为了避免更多人有我这样的遭遇，出一个完整的离线安装教程供大家参考：
第一步，在戳这下载安装包
进入后是这样子的，然后点击下载：
选择第一个，然后点击next：
点击确定：

可能慢一点，在实验室用来大概15分钟左右就下载好了(注:看网络速度)。
下载好以后，打开vs2013，点击帮助按钮：
然后是这样子，设置帮助首选项，设置为在版主查看器中启动：

接着点击：
最重要的一个步骤]]></description><category></category></item><item><title><![CDATA[动态规划与背包问题]]></title><link>https://blog.csdn.net/appup/article/details/115908441</link><guid>https://blog.csdn.net/appup/article/details/115908441</guid><author>appup</author><pubDate>Tue, 20 Apr 2021 22:18:00 +0800</pubDate><description><![CDATA[1、问题的出现

如上图这样一个金字塔,要求从第一层开始到最后一层，所经过的节点之和最大，其中一个节点只能从左下或者右下。
2、解决方式
1）动态规划
该方法首先定义了一个数组，用于储存最后一层节点。接着利用for循环将最后一层节点存储。然后，从最后一行依次遍历至第一行，从第一列遍历至第五列，最后选出所有节点之和最大的。
代码实现：
// 动态规划.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include&lt;memory.h&gt;

#define N]]></description><category></category></item><item><title><![CDATA[平衡二叉树(AVL)]]></title><link>https://blog.csdn.net/appup/article/details/115866151</link><guid>https://blog.csdn.net/appup/article/details/115866151</guid><author>appup</author><pubDate>Mon, 19 Apr 2021 15:57:22 +0800</pubDate><description><![CDATA[1、概述
详细的说明
需要说明的是二种重要的旋转方式：
左旋：旧的根节点为新的根节点的左子树
新的根节点的左子树为旧的根节点的右子树
右旋：旧的根节点为新的根节点的右子树
新的根节点的右子树为旧的根节点的左子树
重点说明四种失衡二叉树的解决方式：
1）左左
当根节的左子树的左孩子添加了新的节点，导致二叉树为失衡二叉树。解决方式：
2）右右
当根节点的右子树的右孩子加入新节点导致二叉树失衡。解决方式：
3）左右
当根节的左孩子的右子节点加入新的节点，导致二叉树失衡。解决方式：对根节的左子树进行左旋，然后对根节]]></description><category></category></item><item><title><![CDATA[哈希表的实现]]></title><link>https://blog.csdn.net/appup/article/details/115838313</link><guid>https://blog.csdn.net/appup/article/details/115838313</guid><author>appup</author><pubDate>Mon, 19 Apr 2021 09:38:07 +0800</pubDate><description><![CDATA[1、哈希表
说明1
说明2
哈希表（Hash table，也叫散列表），是根据关键码值(Key value)而直接进行访问的数据结构。也就是说，它通过把关键码值映射到表中一个位置来访问记录，以加快查找的速度。这个映射函数叫做散列函数，存放记录的数组叫做散列表。
哈希表hashtable(key，value) 就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字，然后就将该数字对数组长度进行取余，取余结果就当作数组的下标，将value存储在以该数字为下标的数组空间里。参考
1、利用链地址法实现]]></description><category></category></item><item><title><![CDATA[A星寻路算法]]></title><link>https://blog.csdn.net/appup/article/details/115750073</link><guid>https://blog.csdn.net/appup/article/details/115750073</guid><author>appup</author><pubDate>Fri, 16 Apr 2021 16:35:17 +0800</pubDate><description><![CDATA[1、寻路规则
A*寻路其实就是对广度寻路的优化（广度寻路太傻所有可能的路都走），最大不同就是增加了对角线的四个方向并且增加了相应的权重去判断选取最小的权重所对应的路径去走，那么最终总的权重就是最小，此时就是最短路径。
需要说明的是，权重的计算：
F=G+H，其中F为某点到终点的权重，G为起始点到当前点的权重，H为当前点到终点的预估权重。
H的计算公式为：（（终点位置行-起点位置行）+（终点位置列-起点位置列））*预估权值（注：H不考虑障碍物啥的，只考虑直线距离）
G就是每走一个方向，如上下左右就加10，如对]]></description><category></category></item><item><title><![CDATA[广度寻路算法]]></title><link>https://blog.csdn.net/appup/article/details/115748998</link><guid>https://blog.csdn.net/appup/article/details/115748998</guid><author>appup</author><pubDate>Fri, 16 Apr 2021 10:10:52 +0800</pubDate><description><![CDATA[1、广度寻路规则
与深度寻路沿着某一方向走不同的是，广度寻路将当前层所有可能要走的路都列举出来并遍历，然后接着下一层，最后谁先走到终点谁就是最短路径。
2、程序实现
利用vector容器实现。还是定义起始点与终点，将初始点标记已经走过。接着定义当前点的位置与将要走的位置，并未这些点建立vector容器。上、下、左、右四个方向，对应的row+±-或col+±-。做一个判断当前点是否能走，不能走的有2种情况：1、当前点已经走过或者墙。2、超出地图范围。
3、具体程序如下：
// 广度寻路算法.cpp : 定义控]]></description><category></category></item><item><title><![CDATA[深度寻路算法的实现]]></title><link>https://blog.csdn.net/appup/article/details/115725949</link><guid>https://blog.csdn.net/appup/article/details/115725949</guid><author>appup</author><pubDate>Thu, 15 Apr 2021 15:30:26 +0800</pubDate><description><![CDATA[1、深度寻路算法规则
深度寻路的规则是沿着一个固定的方向进行行走，等到了一个岔路口再继续选择方向，如果碰上了死胡同再退回下一个岔路口重新选择方向。走过的路不会重新走，一次只走一个岔路口。
2、程序实现
类似于深度遍历算法，深度寻路也是利用栈（stack）实现。首先定义起点与终点，接着定义当前位置与将要走的位置。程序中路径设置为：下、左、右、上。当往下走的时候ROW不变，COL++ ；其余方形类似。在程序中设置了可以走的条件为：1、不是墙2、没有走过。满足以上2个条件就可以尽情的行走。
3、具体程序如下：
为]]></description><category></category></item><item><title><![CDATA[完全二叉树利用数组实现]]></title><link>https://blog.csdn.net/appup/article/details/115678854</link><guid>https://blog.csdn.net/appup/article/details/115678854</guid><author>appup</author><pubDate>Tue, 13 Apr 2021 21:17:20 +0800</pubDate><description><![CDATA[1、备用知识
个人认为利用数组实现二叉树更为简单，二叉树的增、删、改、查也更为简单。在利用数组实现中不需要专门定义一个结构体去声明左孩子与右孩子，需要注意的是数组中的左右孩子是这样定义的：
设父节点的下标为N，则左孩子的下标为：2N+1,右孩子的下标为2N+2。
此代码利用数组实现的完全二叉树插入，删除，以及遍历。
在私有数据成员包括了size（元素个数），capacity（容量），当size&gt;=capacity时需要开辟空间，而开辟空间的大小为：
capacity = capacity+((capa]]></description><category></category></item><item><title><![CDATA[完全二叉树]]></title><link>https://blog.csdn.net/appup/article/details/115558779</link><guid>https://blog.csdn.net/appup/article/details/115558779</guid><author>appup</author><pubDate>Tue, 13 Apr 2021 20:58:09 +0800</pubDate><description><![CDATA[1、什么是完全二叉树
对于一颗具有N个节点的二叉树按层序编号，如果编号I的节点与同样深度的满二叉树中编号为I的节点在二叉树中位置完全相同，则这棵树被称为完全二叉树。
另一种定义：完全二叉树是由满二叉树而引出来的， 若设二叉树的深度为h，除第 h 层外， 其它各层 (1～h-1) 的结点数都达到最大个数(即1~h-1层为一个满二叉树)，第 h 层所有的结点都连续集中在最左边，这就是完全二叉树。
2、不是二叉树的情况：
1）在二叉树中有右孩子没有却左孩子，则一定不是完全二叉树。如下图：

2）一个节点有左孩子没]]></description><category></category></item><item><title><![CDATA[有序二叉树的删除与遍历]]></title><link>https://blog.csdn.net/appup/article/details/115510882</link><guid>https://blog.csdn.net/appup/article/details/115510882</guid><author>appup</author><pubDate>Thu, 08 Apr 2021 11:37:56 +0800</pubDate><description><![CDATA[1、二叉树的删除
删除有序二叉树节点的时候需要注意，删除以后还是有序的。我这里遵循的是：左&gt;根&gt;右！！！
二叉的删除分为三种情况分析，整体思路为：
1）被删除的节点没有孩子
没有孩子的情况最好分析，直接删除该节点，不会影响二叉树的顺序，删除后其还是有序的。
2）被删除的节点有一个孩子(左孩子或者右孩子)
需要寻找到被删除节点的父节点，将被删除节点的孩子与其父节点连接。
3）被删除的节点有2个孩子
需要找到被删除节点的父节点，以及整颗树中最小的节点。将最小的节点与被删除的节点进行数据互换，然后删除]]></description><category></category></item><item><title><![CDATA[二叉树]]></title><link>https://blog.csdn.net/appup/article/details/115484976</link><guid>https://blog.csdn.net/appup/article/details/115484976</guid><author>appup</author><pubDate>Wed, 07 Apr 2021 15:07:51 +0800</pubDate><description><![CDATA[1、二叉树
2、二叉树的特点
1）每个节点最多有两颗子树。
2）左子树与右子树是有顺序的。
3）树中需要区分左、右子树。
3、几种特殊的二叉树
1）满二叉树：在一棵二叉树中如果所有分支节点都存在左右子树，并且所有叶子都在同一层上。

2)完全二叉树
个人理解是：完全二叉树的所有节点与同样深度的满二叉树，它们按照层序编号相同的节点是一一对应的，且编号是连续的。就称之为完全二叉树。
满二叉树一定是一个完全二叉树，反之则不一定成立。
4、二叉数的性质
1）在二叉数的地i层最多有2^(i-1)个节点。
2）深度为K]]></description><category></category></item><item><title><![CDATA[无序树中节点的插入]]></title><link>https://blog.csdn.net/appup/article/details/115461275</link><guid>https://blog.csdn.net/appup/article/details/115461275</guid><author>appup</author><pubDate>Tue, 06 Apr 2021 19:04:03 +0800</pubDate><description><![CDATA[1、树的基本知识
树的介绍
各种树
2、树的插入(利用链表实现)
关于树的插入，逻辑上较为简单，但是实现起来较为复杂简单。
首先，为新的节点开辟一块内存，并将所有数据置为空，接着将需要插入的数据赋给新节点指向的数据。接下分为2种情况分析：1、根节点已经存在；2、根节点不存在。
当根节点不存在，则将插入的节点作为根节点。
当根节点已经存在，接着就是需要寻找插入节点前一个节点数据目前在哪里。这里又分为2种情况：1、可以找到；2、不可已找到。
当可以找到，判断该节点是否有子节点，有子节点就插入到子节点末尾。没有子]]></description><category></category></item><item><title><![CDATA[数据结构中的二种典型查找方式]]></title><link>https://blog.csdn.net/appup/article/details/115455748</link><guid>https://blog.csdn.net/appup/article/details/115455748</guid><author>appup</author><pubDate>Tue, 06 Apr 2021 10:37:10 +0800</pubDate><description><![CDATA[1、二分查找与插值查找
二者唯一不同的是中间值的取值方式不同。二分查找是每次折半取值去缩小搜索范围，而插值查找则是int mid = left+(right - left)*(findData - Arr[left]) / (Arr[right] - Arr[left]);
插值查找
2、代码展示-利用递归实现
// 查找练习.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include&lt;iostream&gt;
using namespace std;
]]></description><category></category></item><item><title><![CDATA[7种典型的排序算法-代码及原理说明]]></title><link>https://blog.csdn.net/appup/article/details/115454439</link><guid>https://blog.csdn.net/appup/article/details/115454439</guid><author>appup</author><pubDate>Tue, 06 Apr 2021 09:44:13 +0800</pubDate><description><![CDATA[参考连接
参考连接2
// 排序算法1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include&lt;iostream&gt;
using namespace std;

void SelectSort(int Arr[], int size);//选择排序
void InsertSort(int Arr[], int size);//插入排序
void ShellSort(int Arr[], int size);//希尔排序
void CountSor]]></description><category></category></item><item><title><![CDATA[C++中几种排序算法小结(二)]]></title><link>https://blog.csdn.net/appup/article/details/115434417</link><guid>https://blog.csdn.net/appup/article/details/115434417</guid><author>appup</author><pubDate>Mon, 05 Apr 2021 10:46:56 +0800</pubDate><description><![CDATA[4、计数排序
与其他排序算法不同的是计数排序算法是利用数组下标来确定元素的位置。
首先，遍历一维数组，从中找出最大值maxNum，接着开辟一块大小为maxNum+1的内存，用于存放计数数组并将计数数组中所有元素置为0。然后，每一个整数按照值对号入座，也就是说第一整数为5，则5所对应的下标元素加1，以此类推，遍历整个原数组。最终计数数组中的每一个值，就代表了对应整数出现的次数。遍历整数数组，输出元素下标值，其值是几就输出几次。
快速排序取值范围较小的情况下使用效率更高。
参考链接
void CountSort]]></description><category></category></item><item><title><![CDATA[C++中几种排序算法小结(一)]]></title><link>https://blog.csdn.net/appup/article/details/115433459</link><guid>https://blog.csdn.net/appup/article/details/115433459</guid><author>appup</author><pubDate>Sun, 04 Apr 2021 21:10:40 +0800</pubDate><description><![CDATA[C++中几种排序算法小结**加粗样式
1、选择排序
从头至尾扫描序列，找出最小的一个元素，和第一个元素交换，接着从剩下的元素中继续这种选择和交换方式，最终得到一个有序序列。
void SelectSort(int Arr[],int size)
{
for (int i = 0; i &lt; size-1; i++)//遍历数组下标 从0开始
{
int index = i;
for (int j = i+1; j &lt; size; j++)
{
if (Arr[index]&gt;Arr[j])
{]]></description><category></category></item></channel></rss>