- 博客(18)
- 收藏
- 关注
原创 正则表达式匹配
问题描述请实现一个函数用来匹配包含"..." 和的"∗*∗" 的正则表达式。模式中的字符"..."表示任意一个字符,而 "∗*∗"表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串&am
2018-12-03 14:43:53
263
原创 Pow函数
问题描述实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。问题分析这道题本身并不难,但是要写出完善的代码,需要考虑到各种可能的输入。1.exponent为0的情况。2.exponent 为负数的情况,需要先转为正数计算,再求结果的倒数。3.base 为0,exponent...
2018-11-29 16:00:18
4981
原创 被3整除
问题描述对于这样一个数列,1,12,123,⋯⋯\cdots ,12345678910, 1234567891011。给出两个端点left, right 。计算从数列的第left个数到第right个(包含端点)数中有多少个数可以被3整除。解决方法寻找规律: 序号 1 2 3 4 5 6 7 8 9 数字 1 12...
2018-03-30 09:55:19
560
原创 移动数组中为0的元素
问题描述给定一个数组,将其中值为0的元素放到数组的后面,并且保持其他元素的相对位置不变,要求不使用额外的空间。思路不能使用额外的空间,则需要用到交换数组中的元素。只需要把数组后面的非0的元素与前面为0的元素交换,就可以了。进行一次遍历即可,代码如下。代码#include <iostream>using namespace std;int main()...
2018-03-30 08:53:33
600
原创 动态规划:01背包
问题描述01背包是一个可以用动态规划解决的经典问题:给定nn种物品和一背包。物品ii的重量是wiw_i ,其价值为viv_i,背包的容量为cc。问应如何选择装入背包中的物品,使得装入背包的物品的总价值最大? 在选择装入背包的物品时,对每种物品ii只有两种选择,即装入背包或不装入背包。不能将物品ii装入背包多次,也不能只装入部分的物品ii。因此,称为01背包问题。形式化描述给定c>0,wi>0,vi
2017-10-05 14:24:52
708
原创 排序算法总结:冒泡排序
基本思想冒泡排序是非常容易理解和实现,以从小到大排序举例: 设数组长度为N。 1. 比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。 2. 这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就 “沉”到数组第N-1个位置。 3. N=N-1,如果N不为0就重复前面二步,否则排序完成。据此,可以容易的写出如下代码。void BubbleSort(int
2017-08-01 15:11:15
502
原创 STL之map应用 回文串
问题描述牛牛有一些字母卡片,每张卡片上都有一个小写字母,所有卡片组成一个字符串s。牛牛一直认为回文这种性质十分优雅,于是牛牛希望用这些卡片拼凑出一些回文串,但是有以下要求: 1、每张卡片只能使用一次 2、要求构成的回文串的数量最少 牛牛想知道用这些字母卡片,最少能拼凑出多少个回文串。 例如: s = “abbaa”,输出1,因为最少可以拼凑出”ababa”这一个回文串 s = “abc”,
2017-08-01 10:17:15
425
原创 字典序位置
问题描述现在有”abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?解决思路对于一个单词A1A2A3…An,对于A1,在字典[A1:An]中以A1开头的第一个单词的位置是cnt(A1)∗(n−1)!。其中cnt(A1)表示在A2到An中小于A1的个数。(单词位置从0开始)对于一个单词A_1A_2A_3 \dots A_n, 对于
2017-06-13 21:14:43
526
原创 动态规划:击鼓传花
问题描述学校联欢晚会的时候,为了使每一个同学都能参与进来,主持人常常会带着同学们玩击鼓传花的游戏。游戏规则是这样的:n个同学坐着围成一个圆圈,指定一个同学手里拿着一束花,主持人在旁边背对着大家开始击鼓,鼓声开始之后拿着花的同学开始传花,每个同学都可以把花传给自己左右的两个同学中的一个(左右任意),当主持人停止击鼓时,传花停止,此时,正拿着花没传出去的那个同学就要给大家表演一个节目。聪明的小赛提出一个
2017-04-25 19:19:03
1403
原创 动态规划:最长公共子序列
问题描述一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X={x1,x2,⋯,xm}X = \{x_1, x_2, \cdots, x_m\} , 则另一序列Z={z1,z2,⋯,zk}Z = \{z_1, z_2, \cdots, z_k\}, 是X的子序列是指存在一个严格递增下标序列{i1,i2,⋯,ik}\{i_1, i_2, \cdots, i_k\},
2017-04-18 18:24:37
720
原创 动态规划:乘积最大
问题描述有一个整数n,将n分解成若干个不同自然数之和,问如何分解能使这些数的乘积最大,输出这个乘积m动态规划根据题意,对于一个整数n,必然存在一个整数x,使得从n中分解出整数x可以使其最后获得最大乘积,这要求对n-x的分解也是最优解。我们用dp[i][j]表示从整数i分解出整数j的这种情况下,能达到的最大乘积。那么dp[i][j]可以递归的定义为 dp[i][j]={1max(dp[i−j][k]
2017-04-12 18:31:46
3988
原创 合并排序算法
算法思想合并排序算法是用分治策略实现对n个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。合并算法可递归描述如下:void MergeSort(int a[], int left, int right){ if (left < right) { //至少还有两个元素
2017-04-09 09:37:35
1424
原创 动态规划:考试通过概率
问题描述小明同学要参加一场考试,考试一共有n道题目,小明必须做对至少60%的题目才能通过考试。考试结束后,小明估算出每题做对的概率,p1,p2,…,pn。你能帮他算出他通过考试的概率吗?输入输出要求输入: 输入第一行一个数n(1<=n<=100),表示题目的个数。第二行n个整数,p1,p2,…,pn。表示小明有pi%的概率做对第i题。(0<=pi<=100) 输出: 小明通过考试的概率,最后结
2017-04-08 16:08:52
2562
2
原创 TCP的三次握手和四次挥手
TCP的三次握手和四次挥手TCP简介TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间
2016-10-26 22:33:37
446
原创 以顺序表存储的大整数运算
大整数运算的实现原理 写一个BigInt(大整数)类,其中数据成员是一个顺序表,用来保存大整数.其方法是将数的每一位数(0~9中的一个)存放在每一个节点中,高位存放在高下标,低位存放在低下标.注意:实现时下标是从1开始的.类中的运算如Add(), Sub()等全用友元函数来实现.类中还有一些辅助的函数,如push_back(), push_front()等是用BigInt的数据成员调用了顺序表中的
2016-09-02 09:11:49
2392
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人