第八次
这是开学以来的三次总结了,同时也是上网课的第二周。
在上一个周的总结中,老师说我们看的内容太少,写不出东西来。所以这一周老师就要求我们每天看十篇博客,然后主要就是看搜索和思维的博客以及题目。我在这一周看的总的博客数大概就是四五十道题目的样子,主要是思维和搜索的题目,可是我真正看懂的很少,我感觉我真正理解也就那十几篇。
下面讲一讲我主要看了那些内容吧。
我先讲一下我学的搜索吧:搜索分为广度搜索与深度搜索。深度搜索可以用于寻找所有情况(大多数都有回溯的过程,以便可以找到全部的解),当然如果想要找最佳方案,就可以建立数组来储存,在函数递归的过程中进行判断,看是否需要更新最优值。
下面具体讲几个我看的深度搜索的题目:
一个就是背包问题,在背包问题中需要对那n 个物品依次进行判断,同时在递归函数中需要进行判断,也就是当当前的判断数已经达到n(就是已经对n个物品进行了拿与不拿的判断),这就是出来了一种方案,这是就需要在函数中判断是否该方案的最大价值超过当前的最大价值,如果超过,那就更新。对于每一件可以拿也可以不拿,由此就产生了不同的方案,该过程需要借助递归来实现。
一个是不拿这件物品,这个只需要在参数列表上已选择的个数那一个参数加一,价值和重量都不需要变。另一个就是那这件物品,这样就需要个数加一,同时价值和重量都需要加上相应的价值和重量(在这一步之前可以进行判断,也就是拿了这个物品会不会出现超重也就是剪枝)。同时我发现在这个代码的实现过程中,都没有价值或重量的加减,他们都在函数的参数列表中进行了实现。
接下来,我主要看的就是思维的题目了,思维的题目,我感觉每一个都有自己的思考点。
我看了一道是小红的375,这个题目就是让你把一个大的数据进行重新排列,使他成为375的倍数。
我第一眼看到这个题目,我就想的是列举375的倍数(有点不太现实)。我看的人家的题解写的是375=3*125。所以,要是375的倍数,必须得是3和125的倍数。确实,这个方法当时没有想到。对于3的倍数,很好判断,只需要所有位数的和加起来是3的倍数就行,对于125的倍数,这里也采用了一个很好的方法,那就是因为125的倍数只和后三位有关,然后我们就可以建一个数组,把所有的情况列举出来,以便接下来统计。
还有一道是汽车的问题,zh前面有许多辆车,每一辆车都有其长度和最大的速度。求zh到达红绿灯线的最长时间。
对于每一辆车,虽然有最大的速度,但是他不能超车,也就是说,会受到前面那一辆车的限制。我当时想的时候,就是想的把所有的车放在一起,但是当我想到那么多车,还有那么多速度的时候,还是感觉到很麻烦,还需要进行速度的比较什么的,但是上面的题解就是把他们当成一个整体,然后有一个共同的速度,用相应的总路程除以相应的速度,找到那个最长的时间就行。不用考虑太多,就把每一个限制速度的时间都求出来,然后比较就行。
通过看博客,我还见到好多二进制之间异或的题目,不过我不是很懂。这就先不写体会了。
还有好多的思维题目我都没有看懂,还有就是好多的题目都是英文的,我真的感觉我对题意的理解有点困难。
这个星期我还看了动态规划的博客,我理解的动态规划,就是利用之前的数据,来减少计算量。我见了好几个题都是感觉运用了递推,后面的数据可以通过前面的数据进行运算得到。大概就是讲大的问题分解为小的问题,当然到最小的那个需要有一个临界,这样才能依次推出来后面的值。
这个星期我还看了许多零碎的知识点。一个就是散列,就是对于一个很大的数,可以将他除以一个整数缩小后,放进hash中,当然也可以将一个点或者字符串放进去。同时在散列这一部分还有一个思想就是以空间换时间,比如说查找一个数在一组数中是否出现过,那么这在存这一组数的时候,就可以将这些数放在一个数组里面,可以同时也统计其个数。
还有就是几个函数了:
Tolower():位于<cctype>头文件中,它可以把括号里面的内容换成小写,如果没有那就保持不变。
Max_elemen(first,end,cmp):位于头文件<algorithm>中,默认情况下从小到大排序,max_elemen()函数返回的是最大值,min_element()函数返回的就是最小值,当然可以通过cmp实现从大到小的排序,这样max_element和min_element返回的值正好相反。这俩个函数可以用于选出数组中的最大最小值,并对他们进行处理。(返回类型是迭代器,取值的话需要在前面加上*),这个函数可以用来处理n机器处理m个项目,不同项目用时不一样,求所需时间。
Template:模板,可以实现代码重用,对于普通的函数当定义了一个int类型的函数,对于char类型的数据,就不能调用这个函数。通过这个模板可以实现不同的数据类型都可以调用。
这个星期总体上我感觉我学的并不好,好多时候掰着电脑看不懂就容易走神,学习效率不高,可能因为这个星期看不懂的内容太多问题就比较明显了。下个星期新的开始,从克制这个毛病开始。