循环的代价-阶乘之和

题目:输入n,计算S = 1! + 2! +3! +...+ n!的末6位(不含前导0)。n ≤ 10^6,n!表示前n个正整数之积。 样例输入: 10 样例输出: 37913 【分析】引入累加变量S之后,核心算法只有“for(int i = 1; i <= n; i++) S += i!”。不过, ... »

c语言数字图像处理(三):仿射变换

仿射变换及坐标变换公式 几何变换改进图像中像素间的空间关系。这些变换通常称为橡皮模变换,因为它们可看成是在一块橡皮模上印刷一幅图像,然后根据预定的一组规则拉伸该薄膜。在数字图像处理中,几何变换由两个基本操作组成: (1)坐标的空间变换 (2)灰度内插,即对变换后的像素赋灰度值 坐标变换公式 (x,y ... »

c语言数字图像处理(二):图片放大与缩小-双线性内插法

图像内插 假设一幅大小为500 * 500的图像扩大1.5倍到750 * 750,创建一个750 * 750 的网格,使其与原图像间隔相同,然后缩小至原图大小,在原图中寻找最接近的像素(或周围的像素)进行赋值,最后再将结果放大 最邻近内插法 寻找最近的像素赋值 双线性内插法 v(x,y) = ax ... »

c语言数字图像处理(一):bmp图片格式及灰度图片转换

本篇文章首先介绍了bmp图片格式,主要参考wiki上的内容,包括bmp文件的存储方式,对于一些常见的bmp文件格式都给了例子,并且对8位 16位RGB555 16位RGB565格式的bmp文件进行了简单分析,最后的代码可以将8位,16位,24位,32位色彩深度的bmp文件转化位8位灰度图片,用作后续 ... »

图算法--最短路径算法的实现与应用

最短路径 在解决网络路由的问题中,寻找图中一个顶点到另一个顶点的最短路径或最小带权路径是非常重要的过程。 正式表述为,给定一个有向带权图G=(V,E),顶点s到V中顶点t的最短路径为在E中边的集合S中连接s到t代价最小的路径。 当找到S时,我们就解决了单对顶点最短路径问题。要做到这一点,实际上首先要 ... »

图算法--最小生成树算法的实现与分析

图是一种灵活的数据结构,它多用于描述对象之间的关系和连接模型。 关于图的算法:最小生成树、最短路径、旅行商问题以及许多其他算法大都会使用到广度优先搜索和深度优先搜索,因为它们提供了一套系统地访问图数据结构的方法。 带权图,是指图的每条边上带有一个值或权,这些权用一个小的数字标记在边上。很多条件因素都 ... »

数据加密算法--详解DES算法原理与实现

DES算法简介 DES(Data Encryption Standard)是目前最为流行的加密算法之一。DES是对称的,也就是说它使用同一个密钥来加密和解密数据。 DES还是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可 ... »

网络编程中重要的几个数据结构和函数

数据结构 IPv4相关结构: sin_len成员是不要求一定存在的,即便这个成员存在,也无需设置它或者检查它。换句话说就是一般情况下,我们用不到这个成员。 sin_family,sin_addr,sin_port这三个成员是必须的。并且几乎所有的实现都增加了sin_zero成员。 sin_famil ... »

加密算法的简介与场景应用

数据加密(或称为密码学)是一种用于对信息进行保密处理的科学。加密的目的是为了防止信息被不应该获取、不允许获取的人得到。加密算法(密码学)在历史上产生了深远的政治、社会和道德影响。 ... »

IEEE 二进制浮点数的表示

朋友在谈一个物流相关的项目,是以前项目的一个延续,涉及到后台的扩展,手机端的App,外加两个App的对接的蓝牙打印机。这个项目前后说了一个多月了吧,最近才草拟了协议。项目本来不复杂,但是客户却如此的拖延。我觉得客户做事好慢,而朋友觉得是自己的就是自己的,不是自己的急也没有用。不断的打电话询问客户,可 ... »

逆序枚举时常犯的一个错误

一 写在开头 1.1 本节内容 分享一个刚刚调通的BUG的过程与结果。 二 排错过程与原因分析 今天在写代码的过程中发现了一个很有意思的BUG,触发该BUG的原因很简单,而且我之前也遇到过。看来这个BUG挺普遍的。首先,大家请看下面的这段代码。 这段代码看上去一点问题也没有,但实际上,它却引发了段错 ... »

glib hash库GHashTable的使用实例

前言 hash表是一种key-value访问的数据结构,hash表存储的数据能够很快捷和方便的去查询。在很多工程项目都需要使用到hash表来存储数据。对于hash表的详细说明这里就不进行阐述了,不了解的可以去查找资料进行了解。今天这里是使用glib的hash库来进行数据的存储和读写,通过实例来进行简 ... »

memset()函数中的坑

一 写在开头1.1 本节内容内存填充函数memset()中的坑。 二 函数原型 功能描述:memset()函数用常量c的值填充由指针s所指向的内存地址空间的前n个字节的内存空间。 DESCRIPTION : The memset() function fills the first n bytes ... »

数据压缩算法---LZ77算法 的分析与实现

LZ77简介 Ziv和Lempel于1977年发表题为“顺序数据压缩的一个通用算法(A Universal Algorithm for Sequential Data Compression )”的论文,论文中描述的算法被后人称为LZ77算法。值得说的是,LZ77严格意义上来说不是一种算法,而是一种 ... »

C语言cJSON库的使用,解析json数据格式

对于c语言来说是没有字典这样的结构的,所以对于解析json格式的数据来说不是那么好解析,但是有些时候又会需要处理这样的数据格式,这里就有一个解析json的函数库可以给我们使用了。这个函数库就是cJSON了。这里提供了下载资源可以下载后直接用。 https://files.cnblogs.com/fi ... »

数据压缩算法---霍夫曼编码的分析与实现

霍夫曼编码是一种基于最小冗余编码的压缩算法。最小冗余编码是指,如果知道一组数据中符号出现的频率,就可以用一种特殊的方式来表示符号从而减少数据需要的存储空间。一种方法是使用较少的位对出现频率高的符号编码,用较多的位对出现频率低的符号编码。我们要意识到,一个符号不一定必须是文本字符,它可以是任何大小的数 ... »

数据压缩的重要组成部分---位操作

数据压缩描述 数据压缩是一个减少数据存储空间的过程。 数据压缩包括两个过程:一个过程是,压缩或编码数据,数据大小减小;另一个过程是,解压缩或解码数据,还原到数据本身的状态。 根据信息的内容,所有的数据都会表现出一定的特性,称为熵(从热力学借用的一个术语)。压缩是可能的,因为绝大多数数据所表现出来的容 ... »

使用“牛顿迭代法”求解方程

使用牛顿迭代法求解方程 尽管通过因式分解和利用求根公式可以很方便的得出多项式方程的根,但大多数时候这个多项式的次数都很高,计算将变得非常复杂,因此,我们必须转向一些近似解法。 牛顿迭代法是其中最好的方法之一。从根本上说,牛顿迭代法通过一系列的迭代操作使得到的结果不断逼近方程的实根。 首先,要选择一个 ... »

考研王道数据结构-顺序表(综合应用2)

本节代码主要来自王道单科18页的综合应用题。 四、从有序顺序表中删除其值在给定值s与t之间(要求s<t)的所有元素。如果s与t不合理或者顺序表为空则显示出错信息并退出运行 找到第一个比s大的元素的位置。(和下面那道题的区别就是是否有序) 核心代码: 也可以不用count统计个数,不用新定义k来遍历。 ... »

考研王道数据结构-顺序表(综合应用1)

本节代码主要来自王道单科18页的综合应用题。 二、18页第2题。设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1) 核心代码: 可以有两种方式: 第一种:定义两个循环指针i,j,其中i向后遍历,j向前遍历,这种更好记忆。 第二种:j没有定义出来,用i和L.length(即L. ... »