左神第七讲-代码C++实现(后四道题)

来源:互联网 发布:淘宝开店信用卡套现 编辑:程序博客网 时间:2024/05/18 22:54

声明:博主是在看了左神讲解之后写的代码,主要目的是为了自己复习巩固,同时将左神的辛苦汗水和宝贵思路发扬出去,哇哈哈哈哈哈。

明天再写喽

1、小易喜欢的数列(网易2018内推题)  

小易非常喜欢拥有以下性质的数列:
1、数列的长度为n
2、数列中的每个数都在1到k之间(包括1和k)
3、对于位置相邻的两个数A和B(A在B前),都满足(A <= B)或(A mod B != 0)(满足其一即可)
例如,当n = 4, k = 7
那么{1,7,7,2},它的长度是4,所有数字也在1到7范围内,并且满足第三条性质,所以小易是喜欢这个数列的
但是小易不喜欢{4,4,4,2}这个数列。小易给出n和k,希望你能帮他求出有多少个是他会喜欢的数列。 

输入描述:
输入包括两个整数n和k(1 ≤ n ≤ 10, 1 ≤ k ≤ 10^5)


输出描述:
输出一个整数,即满足要求的数列个数,因为答案可能很大,输出对1,000,000,007取模的结果。

输入例子1:
2 2

输出例子1:
3

这是属于一大类题目:

(1)先写出递归程序,这一步是最难的,需要将问题抽象成一个子问题,想象程序是按照某个步骤重复的递归实现的。暴力递归的训练需要大量的刷题。(重重之重)

(2)在递归函数中,有的参数是不变量,有的参数是变的,变的参数可以设置成动态规划的某一维,寻找传入参数与递归式的位置依赖关系,写出动态规划版本。

首先找到边界条件或者初始条件(不依赖其他位置),然后寻找普通情况下的依赖关系,动态规划可能是依赖几项,或者某一排,或者别的,选择较好的方式循环操作。

(3)笔试时,内存超限,考虑动态规划压缩,这里需要注意新旧值覆盖问题,选择的某一列数组,要有合适的循环顺序,先更改不被依赖的位置的值(比如leetcode杨辉三角),还有啥四边形不等式(冷门),我并不知道咋做。

2 地主分金条



原创粉丝点击