这周学习了递归和搜索。
一开始感觉挺简单的,但是坐起题来却发现并没有那么简单,还是要有一定的思维的。
有的题我分不清dfs还是bfs,有时候就不用递归直接就写了。
有的时候写的杂乱无章,自己都分不清哪是哪了,刚开始学还是要多看资料,多看题,还是感觉搜索不是很难,可能有了一定的题量之后做题就顺手了。
在课外我还学习了一点数论知识,也是有的看不懂,浅显一点的可以看懂,比较有印象的是素数筛选法和一个循环节,感觉循环节挺好。
【例】f[1] = a, f[2] = b, f[3] = c, 当n>3时 f[n] = (Af[n-1] + Bf[n-2] + Cf[n-3]) % 53,给定a, b, c, A, B, C,求f[n] (n < 2^31)。 由于n非常大,循环模拟求解肯定是不现实的,仔细观察可以发现当n>3时,f[n]的值域为[0, 53),并且连续三个数f[n-1]、f[n-2]、f[n-3]一旦确定,那么f[n]也就确定了,而f[n-1]、f[n-2]、f[n-3]这三个数的组合数为535353种情况,那么对于一个下标k<n,假设f[k]已经求出,并且满足f[k-1] == f[n-1] 且 f[k-2] == f[n-2]且f[k-3] == f[n-3], 则f[n]必定等于f[k],这里的f[k…n-1]就被称为这个数列的循环节。并且在5353*53次计算之内必定能够找到循环节,这个是显而易见的。
4.17学习总结
最新推荐文章于 2023-04-21 00:58:15 发布