02 2018 档案
摘要:题目截图: 思路: 静态链表。将结点的地址按链表顺序存储到 list 数组中,然后对矩阵进行部分逆置即可。注意:输入的结点不一定都在链表内。 代码:
阅读全文
摘要:题目截图: 思路: 字符串处理。根据指数正负做不同处理。 代码: 注:此代码有两个点没过,至今没找到原因。
阅读全文
摘要:题目截图: 思路: 贪心算法。先找到不是 0 且最小的数输出,然后从小到大依次输出即可。注意:如果可以用 for 循环,那就不要用 while,效率极低。 代码:
阅读全文
摘要:题目截图: 思路: 进制转换。详解请看另一篇博客。 代码:
阅读全文
摘要:题目截图: 思路: 字符串处理。以字符串方式输入,然后记录每个数字出现的次数,最后输出出现过的数字即可。 代码:
阅读全文
摘要:题目截图: 思路: 贪心算法。按照单价从高往低遍历即可。详解请看另一篇博客。 代码:
阅读全文
摘要:题目截图: 思路: 简单模拟。详解见另一篇博客。 代码:
阅读全文
摘要:题目截图: 思路: 简单模拟。 代码:
阅读全文
摘要:题目截图: 思路: 高精度与低精度的除法,详解请看另一篇博客。 代码:
阅读全文
摘要:题目截图: 思路: 字符串查找。 代码:
阅读全文
摘要:题目截图: 思路: 可以设置 type 变量,先按 type 排序。然后就是按要求自定义 cmp 函数即可。 代码:
阅读全文
摘要:题目截图: 思路: 字符串处理。 代码:
阅读全文
摘要:题目截图: 思路: 把素数表打至第 N 个素数,然后按格式输出即可。 代码:
阅读全文
摘要:题目截图: 思路: 对每个输入分类并计算 A1,A2,A3,A4,A5 即可。 代码:
阅读全文
摘要:题目截图: 思路: 简单模拟。 代码:
阅读全文
摘要:题目截图: 思路: 简单模拟。 代码:
阅读全文
摘要:题目截图: 思路: 先输入整行字符串,然后按空格分割字符串,最后逆序输出。 代码:
阅读全文
摘要:题目截图: 思路: 先将整个数组逆置,然后将数组前 M 个元素和后面的元素分别逆置即可。 代码:
阅读全文
摘要:题目截图: 思路: 先生成素数表,然后验证每一对相邻且差为 2 的数是否为素数对。 代码:
阅读全文
摘要:题目截图: 思路: 先求得百位数,十位数,个位数,然后按要求输出即可。 代码:
阅读全文
摘要:题目截图: 思路: 对输入的每个数字进行验证,并标记已经验证过的数字。最后没有标记的即为所求的关键数。 代码:
阅读全文
摘要:1. 模式的创建 2. 设置默认值 3. 基本表的撤销 注:撤销表时,数据库中不应该存在依赖于被删除表的其它表、视图、索引、存储过程等对象。 4. 基本表结构的修改 5. 查询(去除重复值) 7. 字符串匹配(LIKE) 8. 三值逻辑(AND OR NOT) 9. 输出排序 10. 输出列重命名
阅读全文
摘要:题目截图: 思路: 边输入数据,边记录最大最小值的相应数据即可。 代码:
阅读全文
摘要:题目截图: 思路: 将输入存储到字符数组中,然后求各位和,然后根据和的每一位输出。 代码:
阅读全文
摘要:题目截图: 思路: 简单模拟。具体见另一篇博客。 代码:
阅读全文
摘要:2014年第一题 超素数 题意: 超素数就是这样的数,比如2333,2是素数,23是素数,233是素数,2333是素数,找出所有的四位超素数。每行输出六个,数之间空格隔开。 思路: 先用埃氏筛选获取素数表,然后遍历每个四位数判断是否为素数。 代码:
阅读全文
摘要:1. 建表 2. 删表 3. 常见数据类型 4. 声明主码 5. 声明外码 6. 声明主码,外码的另一种方式
阅读全文
摘要:本节主要讨论字符串的匹配问题,也就是说,如果给出两个字符串 text 和 pattern,需要判断字符串 pattern 是否是字符串 text 的子串。 一、next 数组 next[i] 表示使子串 s[0...i] 的前缀 s[0...k] 等于后缀 s[i-k...i] 的最大的 k;如果找
阅读全文
摘要:题目截图: 思路: 简单模拟。详情请看另一篇博客。 代码如下:
阅读全文
摘要:题目截图: 思路: 令 asc[i][j] 表示第 j 个 ascii 码为 i 的字符在字符串中的位置,其中 asc[i][0] 存储 ascii 码为 i 的字符在字符串中的个数。另外,由于要根据输入前后决定输出字符位置,需要设置 c[] 来存储字符第一次出现时的位置前后。最后,将个数大于 1
阅读全文
摘要:一、图的存储 一般来说,图的存储方式有两种:邻接矩阵和邻接表。本节只讲解邻接矩阵的形式。 设图 G(V,E) 的顶点标号为 0,1,……,N-1,那么可以令二维数组 G[N][N] 的两维分别表示图的顶点标号,即如果 G[i][j] 为 1,则说明顶点 i 和顶点 j 之间有边;如果 G[i][j]
阅读全文
摘要:1. 打开文件 函数定义:FILE *fopen(char *pname, char *mode) 函数说明:pname 是文件名,mode 是打开文件的方式( r:只读,w:只写) 返回值:若返回 NULL,则打开失败。 2. 关闭文件 函数定义:int fclose(FILE *stream)
阅读全文
摘要:先把前面介绍的动态规划模型列举如下: (1)最大连续子序列和 令 dp[i] 表示以 A[i] 作为结尾的连续序列的最大和。 (2)最长不下降子序列(LIS) 令 dp[i] 表示以 A[i] 作为结尾的最长不下降子序列长度。 (3)最长公共子序列(LCS) 令 dp[i][j] 表示字符串 A 的
阅读全文
摘要:题目截图: 思路: 遍历字符串前半部分,判断对称部分是否相等即可。 代码如下:
阅读全文
摘要:题目截图: 思路: 直接输出即可。 代码如下:
阅读全文
摘要:题目截图: 思路: 可以用动态规划。令 dp[i] 表示 i 阶楼梯有多少种方法,则状态转移方程为: dp[i] = dp[i-2] + dp[i-1], i≥3 边界:dp[1]=1, dp[2]=2。 代码如下:
阅读全文
摘要:题目截图: 思路: 将大整数输入到字符数组,先按字符串长度排序,若字符串长度相等,进行字符串比较。需自定义 cmp 函数,然后使用 C 内置的 qsort 函数。 代码如下:
阅读全文
摘要:题目截图: 思路: 二叉排序树的操作详解请看另一篇博客。 代码如下:
阅读全文
摘要:背包问题是一类经典的动态规划问题,本节只介绍两类最简单的背包问题:01 背包问题和完全背包问题。 一、多阶段动态规划问题 有一类动态规划可解的问题,它可以描述成若干个有序的阶段,且每个阶段的状态只和上一阶段的状态有关,一般把这类问题称为多阶段动态规划问题。如下图所示,该问题被分为 5 个阶段,其中状
阅读全文
摘要:最长回文子串的问题描述: 下面介绍动态规划的方法,使用动态规划可以达到最优的 O(n2) 复杂度。 令 dp[i][j] 表示 S[i] 至 S[j] 所表示的子串是否是回文子串,是则为 1,不是则为 0。这样根据 S[i] 是否等于 S[j] ,可以把转移情况分为两类: 由此可以写出状态转移方程:
阅读全文
摘要:一、字符串输入 1. 输入单个字符串 可以使用 scanf 函数,以空格为分割输入字符串,代码如下: 2. 输入整行字符串 可以使用 gets 函数,以 '\n' 为分割输入整行字符串,代码如下: 二、字符串处理 1. 字符串拷贝 可以使用 strcpy 函数,代码如下: 注意:1. str1 会覆
阅读全文
摘要:题目截图: 思路: 简单模拟,详解请查看另一篇博客。 代码如下:
阅读全文
摘要:题目截图: 思路: 32 位系统下 int 的范围为:-2^31 ~ 2^31 - 1,因此只需将字符串转化为相应的整数然后进行加法运算即可。 代码如下:
阅读全文
摘要:题目截图: 思路: 遍历矩阵的下三角,判断与对称部分是否相同即可。 代码如下:
阅读全文
摘要:题目截图: 思路: 关键字顺序:年龄>工号>姓名,从小到大自定义 cmp 函数,然后使用内置的 qsort 函数即可。qsort 的用法详见另一篇博客。 代码如下:
阅读全文
摘要:题目截图: 思路: 对矩阵的每一行求出最大值以及和,并记录最大值下标,最后将最大值所在位置换成本行元素的和即可。 代码如下:
阅读全文
摘要:最长公共子序列的问题描述为: 下面介绍动态规划的做法。 令 dp[i][j] 表示字符串 A 的 i 号位与字符串 B 的 j 号位之前的 LCS 长度(下标从 1 开始),如 dp[4][5] 表示 "sads" 与 “admin" 的 LCS 长度。那么可以根据 A[i] 和 B[j] 的情况,
阅读全文
摘要:最长不降子序列是这样一个问题: 下面介绍动态规划的做法。 令 dp[i] 表示以 A[i] 结尾的最长不下降序列长度。这样对 A[i] 来说就会有两种可能: 由此可以写出状态转移方程: dp[i] = max{1, dp[j]+1} (j=1,2,....,i-1&&A[j]<A[i]) 上面的状态
阅读全文
摘要:最大连续子序列和问题如下: 下面介绍动态规划的做法,复杂度为 O(n)。 步骤 1:令状态 dp[i] 表示以 A[i] 作为末尾的连续序列的最大和(这里是说 A[i] 必须作为连续序列的末尾)。 步骤 2:做如下考虑:因为 dp[i] 要求是必须以 A[i] 结尾的连续序列,那么只有两种情况: 对
阅读全文
摘要:一、什么是动态规划 动态规划(DP)是一种用来解决一类最优化问题的算法思想。简单来说,动态规划将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解。 二、动态规划的递归写法 以斐波那契(Fibonacci) 数列为例,斐波那契数列的定义为 F0=1,F1=1,Fn=Fn-1
阅读全文
摘要:题目截图: 思路: 首先,只有尾数为 0,1,5,6 的数才可能为守形数,所以其他可以直接排除。然后对其他的数进行判断即可。 代码如下:
阅读全文
摘要:题目截图: 思路: 链表详解请查看另一篇博客。只需要在输入数据的同时按序插入链表即可。 代码如下:
阅读全文
摘要:题目截图: 思路: 定义一个结构体,然后使用 C 语言内置的 qsort 函数,需要自定义 cmp 函数。详情见另一篇博客。 代码如下:
阅读全文
摘要:一、堆的定义与基本操作 堆是一棵完全二叉树,树中每个结点的值都不小于(或不大于)其左右孩子结点的值。其中,如果父亲结点的值大于或等于孩子结点的值,那么称这样的堆为大顶堆,这时候每个结点的值都是以它为根结点的子树的最大值;如果父亲结点的值小于或等于孩子结点的值,那么称这样的堆为小顶堆,这时候每个结点的
阅读全文
摘要:题目截图: 思路: 先对每列四个数按数值大小逆序排序,然后对最大的两个数按索引顺序排序即可。中间用到 qsort 函数,详细用法见另一篇博客。 代码如下:
阅读全文
摘要:题目截图: 思路: 先求出字符的 ASCII 码,然后将 ASCII 码转换成七位二进制数,最后根据二进制数 1 的个数进行奇偶校验。 代码如下:
阅读全文
摘要:题目截图: 思路: 因为先序序列与中序序列可以确定一棵二叉树,因此先根据先序序列和后序序列建立二叉树,然后后序输出即可。详细讲解见另一篇博客。 代码如下:
阅读全文
摘要:一、并查集的定义 并查集是一种维护集合的数据结构,它的名字中“并”“查”“集”分别取自 Union(合并)、Find(查找)、Set(集合)这 3 个单词。也就是说,并查集支持下面两个操纵: 并查集的实现就是用一个数组: 例如 father[1]=2 就表示元素 1 的父亲结点是元素 2。另外,如果
阅读全文
摘要:题目截图: 思路: 直接使用 C 语言内置的 qsort 函数,然后按要求输出即可。qsort 函数用法请查看另一篇博文。 代码如下:
阅读全文
摘要:题目截图: 思路: 直接用 C 语言内置的 qsort 函数即可,qsort 函数用法请查看另一篇博文。 代码如下:
阅读全文
摘要:题目截图: 思路: 大整数加法,将 a,b 储存到数组中操作,具体看博文。 代码如下:
阅读全文
摘要:题目截图: 思路: 利用辅助数组,将两个字符串都复制到该数组中即可。 代码如下:
阅读全文
摘要:一、平衡二叉树的定义 平衡二叉树(AVL 树)仍然是一棵二叉查找树,只是在其基础上增加了“平衡”的要求。所谓平衡是指,对 AVL 树的任意结点来说,其左子树与右子树的高度之差的绝对值不超过 1,其中左子树与右子树的高度之差称为该结点的平衡因子。 由于需要对每个结点都得到平衡因子,因此需要在树的结构中
阅读全文
摘要:题目截图: 思路: 参照我的另一篇博客。 代码如下:
阅读全文
摘要:题目截图 思路: 按格式提取 a,b,c,d,然后判断 a,b,c,d 是否合法即可。 代码如下:
阅读全文
摘要:题目截图: 思路: 依次输入单词,若单词末位为 '.' 则表示为结尾,减去末位后输出单词长度,输入停止;否则,输出单词长度,继续输入。 代码如下:
阅读全文
摘要:题目截图: 思路: 不太理解题目的要求不使用任何数组是啥意思,反正用数组通过了。简单的矩阵转置。 代码如下:
阅读全文
摘要:一、二叉查找树的定义 二叉查找树是一种特殊的二叉树,又称为排序二叉树、二叉搜索树、二叉排序树。递归定义如下: 要么二叉查找树是一棵空树 要么二叉查找树由根结点、左子树、右子树组成,其中左子树和右子树都是二叉查找树,且左子树上所有结点的数据域均小于或等于根结点的数据域,右子树上所有结点的数据域均大于根
阅读全文