C
文章平均质量分 55
leehyukshuai
学生一枚,文章如有错误望指正~
展开
-
在Windows上使用sfml库开发图形应用【vscode+MinGW配置】
在linux系统上,使用sfml库非常轻松,就够了,此后在编译时,需要在编译选项中指明所需要的库,,此后就可以愉快地运行了。但是在windows上就复杂很多,由于笔者主要使用vscode进行开发,所以下文就介绍了如何配置vscode+sfml的开发环境。原创 2023-11-12 20:33:23 · 1432 阅读 · 0 评论 -
【定量分析】插入排序运行时间与输入数组元素排列之间的关系
插入排序的时间复杂度的更精确的量度应该为:$\Theta(n+m)$,其中n为数组规模,m为数组逆序对数。原创 2023-01-04 21:08:14 · 257 阅读 · 0 评论 -
【定量分析】冒泡排序运行时间与输入数组元素排列之间的关系
冒泡排序的循环迭代次数等于所有元素的排序距离中的最大值,其中排序距离的定义为:排序后该元素的下标减去当前该元素的下标,值可正可负。原创 2023-01-04 20:37:16 · 165 阅读 · 0 评论 -
利用Arduino和ADXL345加速度计测量实时倾角并图形化处理
本文重点说明部分是:I2C串口通信在Arduino平台的使用(利用wire库进行单/多字节读写的方法);利用旋转矩阵进行线性变换。原创 2023-01-01 22:52:48 · 1358 阅读 · 0 评论 -
C++ 实现控制台3D动画
由于代码竞赛活动要求代码行数尽可能少,所以代码没有任何模块性或者可阅读性。但是,在Linux上编译完成后(注意要包含curses库,即g++编译时加上`-l curses`选项),就可以看到一个不断旋转浮动的彩色立方体。原创 2022-11-07 18:51:19 · 1212 阅读 · 0 评论 -
理解C语言指针
因此当p是一个指针的时候,假设p的地址为0xfffff0,且指向int型数据,那么p+1就不是0xfffff1,而是0xfffff0+sizeof(int)=0xfffff4。char *p[2][3],由于[]优先级高于*,所以p是一个2*3的数组,数组中每一个元素都是char *类型的。int (*p)[3],由于()优先级最高,所以p是一个指针,指向了int[3]型的数据。,另外,A作为一个数组,A的地址就是A的第一个元素的位置,同时也是A本身。int *p,p是一个指向int类型数据的指针。原创 2022-10-27 14:57:48 · 669 阅读 · 0 评论 -
从暴力算法一步步走到KMP算法
学习kmp算法时,总是不理解为什么**应该**这样,next数组的提出和初始化实在是把人绕的头晕。我觉得,不是自己太愚笨,理解不了如此高深莫测的kmp,而是说,很多教程都是站在巨人的肩膀上告诉我们应该怎样云云,而不是指引我们一步步爬到高处,毕竟没有经历过程的洗礼,一蹴而就的理解自然是很困难的事情。因此本文就从Brute Force开始,经过不断的分析、消除不必要的回溯,来最终得到并真正地理解kmp算法。原创 2022-09-30 19:12:11 · 315 阅读 · 0 评论 -
C++ 利用union和bitset访问任意对象的二进制内容
在学习信息的存储和表示时,查看对象的二进制格式是非常重要的学习方法,但这个过程大部分是通过一个循环的函数进行的,比较麻烦。而利用C++自带的bitset就能轻松实现访问。如此一来就可以轻松实现访问了。原创 2022-08-19 19:49:05 · 321 阅读 · 0 评论 -
POJ Project Summer
小 I 和小 B 最近沉迷一款叫做《Project Summer》的游戏,小 I 扮演这个游戏中需要逃生的无辜者(Innocent), 小 B 扮演这个游戏中抓住无辜者,阻止其逃生的背叛者(Betrayer)。这个游戏的地图是一个 N 行 M 列 的矩形,每个格点表示一个位置。 '#' 表示地图中的障碍物,'.' 表示地图中的空地,此外,地图中还有只有背叛者才能使用的传送门,用小写字母 'a' - 'z' 标记,它们在地图上成对出现。角色可以花费 1 单位的时间从一个格子走到上下左右相邻的 4 ..原创 2022-06-23 21:10:03 · 1040 阅读 · 0 评论 -
二叉树 先根/中根/后根/层级 递归/非递归 周游的总结C++
观前提示:代码没有注释,里面有很多是参考别人的代码,算是备忘录。先是我二叉树的实现方式:class node{public: int info; node *lLink, *rLink; node(int _info) : info(_info), lLink(NULL), rLink(NULL) {}};然后是周游算法:// 递归实现void preOrder(node *root){ if (root == NULL) return;原创 2022-05-03 10:43:09 · 1382 阅读 · 0 评论 -
C语言 创建和传递‘以变量定义长宽的二维数组’的两种方法
有时候我们需要先读取用户的输入来定义一个二维数组的规模,但是经常会出现各式各样的问题,尤其是当代码涉及到在函数间传递数组的时候.下面就写两种比较安全妥当的方法.方法一:通过创建一个二级指针来实现二维数组的传递.优点:易于理解,而且在函数间传递起来较为方便.缺点:创建和释放比较麻烦.#include <stdio.h>#include <stdlib.h>void f(int **a){ printf("f(int **a) is right.\n").原创 2022-02-05 01:18:54 · 3174 阅读 · 3 评论 -
写一个简单的qsort和bsearch
qsort原本是利用快速排序的,不过在此出于简化目的,采用选择排序。话不多说,上代码。void Qsort(void *base, int len, int size, int (*cmp)(const void *, const void *)){ for (int i = 0; i < len - 1; i++) { int minid = i; for (int j = i + 1; j < len; j++) .原创 2022-02-05 00:33:36 · 759 阅读 · 0 评论 -
C语言 按姓氏排序并搜索字符串数组
其实实现起来并不困难,只需要利用stdlib.h中的qsort()以及bsearch()函数即可。但是需要注意有关二级指针的一些问题,否则就会卡上好久还不知道为什么出错(比如我-_-)#include <stdio.h>#include <string.h>#include <stdlib.h>int cmp(const void *p1, const void *p2){ // 由于p1是指向数组元素的指针,而数组元素本身又是一个字符串指针, // .原创 2022-02-04 23:42:18 · 832 阅读 · 0 评论 -
C语言 通过位操作写一个用于查看任意地址的存储内容的函数
在学习整数,浮点数以及中文字符的存储方式时,经常会需要直接查看他们在内存中的存储形式,如此一来,写一个函数来查看任意地址的存储内容就显得很有必要。原创 2022-01-22 12:45:01 · 657 阅读 · 0 评论 -
C语言 一步步教你做一个带有图形界面的冒险小游戏
本文没有繁难的代码,所以很适合想做游戏但不知道如何做游戏的同学食用~原创 2022-01-20 15:40:25 · 6453 阅读 · 1 评论 -
C语言 手撸一个函数来把整数类型转换为字符串
首先效果如下:(段首 为输入,段尾为输出)首先分析一下目标函数的应该具有的功能:传入一个int类型整数,返回一个指向目标字符串的char类型指针。也即:char* str(int x);代码及注释如下://convert int to string#include <stdio.h>#include <stdlib.h>char* str(int x);void _str(int x,char* ret,int* p_cnt);/...原创 2022-01-20 00:55:38 · 1375 阅读 · 0 评论 -
C语言汉字在内存中如何存储
近日在学习C语言字符串的知识时,对汉字在内存中的存储方式有了一些进一步的认识,下面整理了一下探索的结果。char s[] = "你";printf("%d\n",strlen(s));printf("%hhd %hhd\n",s[0],s[1]); // %hhd可简单理解为以signed char格式输出//结果显示为2-60 -29第一行输出:结果为2,表明"你"是以gbk格式存储的,若结果为3,则说明是以utf-8格式存储的。第二行输出:由于整数在内存当中是以补码形式存储,原创 2022-01-16 14:03:24 · 6666 阅读 · 2 评论