摘要:
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] ,可以把转移情况分为两类: 由此可以写出状态转移方程: 阅读全文