- 博客(30)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 汉诺塔新解:一种更美的描述
我要火了,我发现一种更美的解决汉诺塔问题的算法描述,你只需要完成以下步骤即可完成汉诺塔问题。有圆柱A,B,C。他们的地位是一样的。假设刚开始,圆盘在圆柱A上。循环A,B,C柱子,假设当前为X柱子,执行如下两步:第一步,如果可以,将X最上方圆盘移动到相邻的下一个柱子x+1上。第二步:进一步将X柱的最上方圆盘移动到较远的柱子x+2上。如果x最上方圆盘不能移动到x+2,就将x+2最上方圆盘移动到x。注:...
2018-02-26 14:35:54
499
1
原创 区块链系列1:区块链是什么
本文章配套视频:链接:https://pan.baidu.com/s/1gS3OhQ7xX6tds5bD8P54Aw 密码:s6af什么是哈希函数哈希函数的特点为:1、输入无限的字符会输出给我们固定长度的字符,如下面的例子中,我输入了一串字符:我输入了一串很长的字符,最后都会返回同样长度的哈希值:2、输入的函数的微小变化最后都会带来哈希函数返回值的巨大变化多加了一个句号,带来哈希函数的巨大变化:3...
2018-05-23 09:06:53
817
转载 word的加速,解决word顿卡
a. 禁用"硬件加速":word选项--高级--显示--禁用硬件图形加速,把这个选中试试b. 禁用‘子像素定位平滑屏幕上的字体’:word选项--高级--显示--使用子像素定位平滑屏幕上的字体,把这个勾去掉。...
2018-05-13 14:13:24
12754
原创 How to make an altcoin
pip install pip==9.0.3 Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-install...
2018-04-14 08:50:52
2190
原创 海盗分金,追梦出手,必属精品
有一天,有5个很精明的海盗抢到100个金币,他们决定依次由甲,乙,丙,丁,卯五个海盗来分当由甲分时,剩下的海盗表决,如果乙,丙,丁,卯四人中有一半以及以上反对就把甲扔下海,再由乙分……以此类推;如果超过一半的人同意,就按甲的分法。请问甲要依次分给乙,丙,丁,卯多少才能不被扔下海并且让自己拿到最多?#include<stdio.h>#include<stdlib.h>#inc...
2018-04-02 08:33:02
396
原创 用最少的分号实现strstr函数
1、用最少的分号实现strstr函数2、不使用逗号3、不使用系统的字符串库函数4、需判断是否为NULLchar * mystrstr4(char *str1, char*str2) { if (str1&&str2) { char * p2 = str2; while (*str1) { while (*p2 &...
2018-04-01 23:11:18
167
原创 QT黑白棋AI项目详解:一种另类的绘制方式
这个项目有启发意义,棋盘不是绘制的,而是图片贴上去的。考察:坐标,pixmap,黑白棋的逻辑想了解传统的绘制方式和棋类AI的传统高级方法,请看我关于五子棋的系列文章开源项目:https://github.com/zhuimengshaonian66/BlackWriteChess第一步:绘制UI棋盘是一张图,这个项目的难点是找坐标。但是我们有不传的法宝,通过鼠标的移动时间轻松搞定。将起点坐标和方格...
2018-03-19 18:14:46
2249
1
原创 QT九皇后项目详解
学会使用combobox,qt中的容器,九皇后逻辑开源项目:https://github.com/zhuimengshaonian66/nineQueue点击按钮;fillMaps(map)执行8皇后逻辑,将所有的方案放入到combobox中void Widget::on_btnStart_clicked(){ bool isok; unsigned int num = ui->...
2018-03-19 10:33:36
1043
原创 QT大数据查询项目详解,解决中文乱码
掌握listview,model/view,中文乱码别打我数据的注意开源项目:https://github.com/zhuimengshaonian66/datasearch-by-QT第一步:建立UI第二步处理鼠标点击,toLocal8Bit()将文本框文字转为本地,就是我的gb2312编码。void MainWindow::on_pushButton_clicked(){ QString...
2018-03-19 08:45:08
381
原创 QT汉诺塔项目详解:多线程动画
关注QT坐标,多线程动画中坐标的变化。汉诺塔都是吃要的。我的汉诺塔新解:一种更美的描述。http://blog.csdn.net/weixin_39788534/article/details/79376528项目地址:https://github.com/zhuimengshaonian66/hannuo2018年 追梦少年 QQ:1131052403 —— Dreamer QQ : 11310...
2018-03-18 18:50:49
1596
1
原创 QT迷宫项目详解:多线程动画
学习布局、多线程如何动起来,当然了,还有迷宫的递归代码。一赏:输入,点击show。出现了,我的头像点击按钮,设置障碍,还是我:点击go,动态寻找路径,注意是动画的:开源项目:https://github.com/zhuimengshaonian66/maze-by-QT第一步:设置UI,2、处理文本框输入后,绘制方格。QT的布局还是很容易的。免费送上精彩的auto,你是真的懂c++吗。void W...
2018-03-18 17:39:07
2041
原创 经典面试题之2:蚂蚁的移动
#include<iostream>using namespace std;int flag = 0; //存储当前静止蚂蚁的距离int staticantindex = 0;int myantdistance = 0; //存储我的蚂蚁的距离int myantpos = 0;//存储我的蚂蚁在数组的位置。int a[4][2] = //蚂蚁的初始化位置和状态。{...
2018-03-17 15:38:31
334
原创 QT布尔树项目详解:Boolean tree布尔表达式解析
本项目源代码:https://github.com/zhuimengshaonian66/QT-booleanTree/分析它是因为我在不断的学习的过程中,觉得写计算器的代码和布尔表达式解析有异曲同工之妙,这是我计算器的QT项目:http://blog.csdn.net/weixin_39788534/article/details/79586181对于QT解析树本身而言,其涉及到了QT自定义模块...
2018-03-16 21:33:50
1746
原创 QT计算器项目详解
创建QDialog基类,在UI界面绘制如图18个按钮和text开源项目:https://github.com/zhuimengshaonian66/Calculator-by-QT每个按钮都很简单,那就是点击后,连接文本。只有=号的那个按钮比较特殊,那就是将Qstring类型变为char*类型,从而进行逻辑处理。void Dialog::on_pushButton_clicked(){ QS...
2018-03-16 20:15:50
942
原创 经典面试题之1:卡牌翻转
#include<iostream>using namespace std;const int N = 4; //N阶大矩阵const int M =3; //M阶小矩阵int a[N][N] = //卡牌原始状态{ 0, 0 ,0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1,};int flag = 0;//当前卡牌已...
2018-03-15 15:36:06
967
原创 回溯解数独原创经典代码
#include<iostream>using namespace std;int map[9][9] = { 0, 0, 5, 3, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 2, 0, 0, 7, 0, 0, 1, 0, 5, 0, 0, 4, 0, 0, 0, 0, 5, 3, 0, 0, 0, 1, 0, 0, 7, 0, 0, 0, 6, 0...
2018-03-13 19:39:05
404
原创 前缀表达式转后缀表达式及求值经典代码
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>typedef struct stack{ int top; char s[100];}Stack;typedef struct OPstack{ int top; float s[100];}OPStack;void InitStack(St...
2018-03-13 19:38:22
3243
原创 QT五子棋详解之九:置换表,zobrist哈希,生成32位和64位随机数
我们很容易明白,在alpha-beta剪枝算法中,会遇到重复的棋局。如下面的两个图的走法是一样的,不必要将两个局面的得分都计算一次。因此需要将棋盘的信息保存起来以备后续使用,这就是置换表。在棋类游戏中经常使用的就是zobrist哈希。zobrist哈希并不是一种最好的哈希算法,但是确实最高效的。有时候我们必须在最好与效率之间做出选择。zobrist是一个人的名字,源自他1970的年的一片论文试想一...
2018-03-13 14:23:47
6393
10
原创 QT五子棋详解之八:min-max优化的负极大值算法兼谈qt内存泄露
负极大值搜索作为min-max博弈算法的优化,其本质上没有任何区别。负极大值搜索它的效率也不会快多少,只是它的代码更加优雅简洁。更好进行代码的移植。我们将min-max博弈算法与负极大值算法的伪代码发出来比较一下。不加那个剪枝的int MinMax(int depth) { if (SideToMove() == WHITE) { // 白方是“最大”者 return Max(depth); }...
2018-03-12 15:20:28
1928
2
原创 QT五子棋项目详解之七:Alpha-Beta剪枝算法前使用算杀
Alpha-Beta剪枝算法的缺陷是比较明显。1、最多只能搜索有限层,目前优化之后我可以搜索到8层。即电脑4步,人4步后的情况。但是还是不够的。看不到有限步数之后的棋。2、电脑在思考第8层的时候,假定玩家是按照第8层走的。其实,相同棋力的玩家的在下一步的时候也会思考8层,是按照8层后的局面来选择的。如下图,假设电脑思考3层,电脑实际假设了玩家只思考了2层。其实玩家也会思考到最后的蓝色层。一种优化的...
2018-03-10 16:30:30
2187
3
原创 QT五子棋项目详解之六:AI启发式搜索:剪枝算法的更一步优化
前面讲到了剪枝算法作为一种对于极大极小博弈算法的优化,是提高效率的一种好办法。但是我们不满足于此。因为一般的普通人是可以思考到6层以上。为了对效率进行提高,我们还有两种办法。想象一下如下图,电脑可能走棋如果从4个变为2个,那么效率的提升就会提高一倍。其实深入下去就会发现,这些优化都是理所当然。因为有一些明显的不好的点直接就可以排除掉。就比如在最开始的时候,没有人会在最左上的0,0下子一样。在实际中...
2018-03-10 09:52:58
2935
3
原创 QT五子棋项目详解之五:AI人机对战Alpha-Beta剪枝算法
前面介绍了单纯的max-min算法,其效率是很低的,只能思考四层。没有看过的,先去看看,才能理解后面的。只能思考4层是由于可能的走法太多了,如第一步电脑有225种走法,每一种走法都会导致玩家有224种走法............就像是一颗庞大的树。由于可能性太多,所以优化是必须的。优化的第一种办法就是剪枝。没有看过的,先去看看,才能理解后面的。QT五子棋项目详解之四:AI人机对战max-min极大...
2018-03-09 18:23:56
2742
2
原创 QT五子棋项目详解之四:AI人机对战max-min极大极小值博弈算法
不考虑博弈的算法怎么能算是AI呢?max-min极大极小值算法就是考虑了博弈的算法。来看一个简单的例子在这个棋局中,电脑为白旗,白旗走哪一步更好呢,也许使用策略表会告诉你,应该冲4,但是冲4后,玩家就会连成4。这就是考虑了博弈之后,这一步棋就是败局。这就是为什么有max-min算法。也理所当然应该这样。现在我们考虑两层的情况:这一步,应该电脑走了,电脑现在有3种走法,A,B,C 。当电脑走A后,玩...
2018-03-09 18:03:12
5502
2
原创 QT五子棋项目详解之三:AI人机对战,策略表
界面都搞定了,专心分析逻辑。五子棋AI最难的是分析整个棋局的局势。一种办法是遍历五子棋的每一个点,判断每一个点的分数。如何判断每一个点的得分?根据这个点组成的所有五元组。比如,对于电脑黑棋=4,白旗=5来说,对于该点组成的每一个五元组,有如下策略表:见下面。。。当case 0 意味着此无棋子。当case 4 意味着有一个黑棋棋子。当case 8 意味着有两个个黑棋棋子。...当case 20 意味...
2018-03-09 17:00:25
3995
1
原创 QT五子棋项目详解之二:人人对战
前面完成了界面的绘制,完成人人对战需要解决以下问题一、时间使用LCD_NUMBER控件来处理时间时间处理的逻辑:1、当时间结束,判负一开始,建立两个定时器1、黑白玩家交替执行,当黑棋玩家下完,黑棋的定时器停止,白棋的定时器开始。void GameWindow::mouseReleaseEvent(QMouseEvent* event)鼠标释放后2、调用超时函数,时间处理完成二、人人对战逻辑:黑棋下...
2018-03-09 15:46:44
3304
1
原创 QT五子棋项目详解之一:界面绘制
首页展示:第1步设置首页:新建项目,选择mainwindow基类,在UI界面,选择按钮和lable标签。给label设置背景图片哥的妹子。为按钮设置槽。第2步:新建qt界面师设计类gamewindow,点击人人对战或人机对战就会转到gamewindow界面。第3步:绘制棋盘棋盘绘制效果图:3.1设置界面大小和背景,setmouseTracking为接受鼠标移动3.2 绘制棋盘边界边框,棋盘内颜色3...
2018-03-09 15:07:26
14517
15
原创 找零钱3种方法
可以用暴力的递归遍历,这种遍历还可以优化。最精彩的还是动态规划,因为有不超过100张的限制,它的难度超过了普通的多重背包问题,我思考了很久,我认为可以把他看成多重的拓展,我们知道多重背包可以优化为一个一维的重量数组,那么这个问题可以拓展为二维的,票数j和钱数k#include<Windows.h>#include<stdio.h>#include<stdlib.h&g...
2018-02-26 20:49:22
6937
原创 清华大学大一上C语言机试第二题:进制加法
这就是清华大学大一上对学生的严格要求。考察:文件,字符串处理,进制加法#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<memory.h>#include<math.h>#include<string.h>//2018年2月23...
2018-02-23 16:08:15
717
原创 清华大学大一上C语言机试第一题:K阶好数
这就是清华大学大一上对学生的严格要求。这道题难点是首要掌握什么是质因数,以及质因数的性质。考察知识点:文件读写,质因数性质,循环,逻辑质因数(素因数或质因子)在数论里是指能整除给定正整数的质数,质因数的一个重要性质是:任何正整数皆有独一无二的质因子分解式这里第一种方法,我在不知道这一个重要性质的前提下,遍历了一个数所有的质因数可能性。导致使用了4层循环#define _CRT_SECURE_NO_...
2018-02-23 11:05:50
658
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人