目录
重要资料
C++面试题系列
牛客力扣
NC121:字符串的排列
https://blog.csdn.net/lr604844811/article/details/99710445
华为机试
HJ16:购物单
有依赖的背包问题,参考http://blog.csdn.net/liang5630/article/details/8030108
小数据的有依赖背包问题,可以直接转为分组背包问题。(搜“背包九讲完整版.PDF”有详细讲解)
0-19分钟
Dd大牛的背包九讲
https://blog.csdn.net/u014046022/article/details/80646379
https://www.cnblogs.com/jbelial/articles/2116074.html
HJ24合唱队
首先计算每个数在最大递增子串中的位置
186 186 150 200 160 130 197 200 quene
1 1 1 2 2 1 3 4 递增计数
然后计算每个数在反向最大递减子串中的位置--->计算反向后每个数在最大递增子串中的位置
200 197 130 160 200 150 186 186 反向quene
1 1 1 2 3 2 3 3 递减计数
然后将每个数的递增计数和递减计数相加
186 186 150 200 160 130 197 200 quene
1 1 1 2 2 1 3 4 递增计数
3 3 2 3 2 1 1 1 递减计数
4 4 3 5 4 2 4 5 每个数在所在队列的人数+1(自己在递增和递减中被重复计算)
如160这个数,
在递增队列中有2个人数
150 160
在递减队列中有2个人数
160 130
那么160所在队列中就有3个人
150 160 130
每个数的所在队列人数表达就是这个意思
总人数 - 该数所在队列人数 = 需要出队的人数
HJ61放苹果???
* 放置苹果的方法数
* 算法思想:放苹果有两种情况,一种是有盘子为空,一种是每个盘子中都有苹果
* 令(m,n)表示将m个苹果放入n个盘子中的摆放方法总数
* 1.假设有1个盘子为空,则(m,n)问题转化为将m个苹果放在n-1个盘子上,即求得(m,n-1)
* 2.假设所有的盘子都装有苹果,则每个盘子上至少有一个苹果,即还剩下m-n个苹果,
* 问题转化为将m-n个苹果放到n个盘子上的摆放方法总数,即(m-n,n)