总结:
1、写代码,除了掌握基本的算法、代码工地,还要对操作系统,计算机有深刻了解,要知道计算机是如何执行的。
2、搜索算法中经常用到记忆化搜索;
int keep[max_n + 5] = {0};
......
if (n <= size && keep[n]) return keep [n]; //这里n <= max_n && keep[n]不能写反了,写成keep[n] && n <= max_n
3、size实验中了解到,记忆化要考虑缓存到底能存多大的内容;
size real
100 0m1.153s
1000 0m0.652s
1000000 0m0.047s
10000000 0m0.094s
这和计算机底层有关
缓存有三个等级:
L1,速度最快,容量最小
L2,速度居中,容量居中
L3,速度最慢,容量最大,最多也就8MB
先从内存读到缓存当中,当前最大的缓存是L3级的,但是也很小,大概也是8MB左右,相当于八百万个字节;
要涉及到页面置换的问题,有可能加载进来的数据,没有当前要找的值,因此要换一页,要分页进行加载,还有命中率的问题。
因此,记忆化,要考虑缓存到底能存多大的内容。
写好代码,要做哪些
1、算法,代码功底
2、要对操作系统,计算机有深刻了解,要知道计算机是如何执行的;
要衡量一天能准确地有价值地完成的代码量的多少;