第3小的数
定义一个函数getValue(x,n)能够得到比x大的最小的数,如果不存在返回,getValue(-1,n),即得到n个正数中最小的数,假设min1=getValue(-1,n),那么min2=getValue(min1,n),min3=getValue(min2,n)。如果min1,min2,min3有一个等于-1,则不存在,否则第三小的就是min3。
定义一个函数getPosition(x,n)返回x的下标
回文串匹配
题目:给一个s,p,请找到在s中出现的位置
思路:设p的长度为l,[0, l-1]=p[0, l-1],
[l, 2l)=p[l-1,0],
[2*l]='\0';这样就得到了
,接下来用kmp,或者BF都行
生成组合
思路,可以利用2进制枚举,每个数的状态是取或不取,即对应0或1,假设1是取。
假设n=10,k=6;那么‘1111110000’,刚好就是一个合法的序列,输出123456即可。
那么我们可以从(1<<n)-1遍历至0,看看哪个数是合法的,然后输出即可。
另外还有一种递归的方法
getSeq(...)参数的含义,枚举到第i位,选取cnt个数字,n个数字,k个数字,上一位数字是pre