0
点赞
收藏
分享

微信扫一扫

ACM总结

年迈的代码机器 2022-03-30 阅读 77
算法

第七次

这是这个学期的第四个周,同时因为疫情,这也是上网课的第一周。在这个星期里足不出户就可以学习,在路上的好多时间都可以省去,可是我现在回想起来感觉我这个星期学的算法内容并不多。

这个星期我确定了要参加五月份的省赛。所以我需要更加努力的学习那些没有见过的算法内容。

这个星期我主要的学习内容就是STL的内容了,可能因为老师最近讲的这个,我就找了一些这个方面的内容来看,我看了一些这方面的例题。其中有一个例题是这样的:给出一些字符串,然后接着进行提问,提问的时候也是一堆字符串,然后输出原来字符串中有多少是以提问的字符串为前缀的。

我当时看到这个题目的答案后,我就感觉这个代码很好。这个代码用的是map,因为这个容器可以存一个字符串和一个整型,正好可以用来统计个数。其中有这样一部分代码

  for(i=len;i>0;i--)

  {

   s[i]='\0';

   m[s]++;

}

这一部分代码中的循环是从大到小,然后从后往前依次赋值为'\0',这样就可以统计不同的前缀的个数。看到这一部分,我就将这个代码收藏起来了。

同时,我还见了这样一到题目,就是讲对一些单词,如果单词一样那就都去掉,还有就是二个单词如果字母全部一样(不用考虑顺序),这样也算一个单词,然后排序后输出。这个题目给的代码也是用map,对于每一个单词,将这个单词内部进行小写化以及进行内部的排序(用sort(v.begin(),v.end();),以便满足题目中的相同的单词的要求。这样统计次数,如果是1,那就放在一个vector中,以便接下来的输出。

就上面那个例题,我感觉也可以用set,因为set可以自动排序并且不含重复的元素。

除了STL里面的内容,因为下个星期要学习搜索,我看了几道例题,一个是素数环,还有一个是把n拆成几个小于它的自然数之和还有一个马的遍历,这几个题都用到了递归,同时都有一个回溯的过程。这是下节课的课件内容,题目后面有答案, 然后看答案的话,可以看懂,就是不知道如果让自己写的话,能不能写出来。这几个代码都是用了好多函数。确实这样可以使代码易懂。

还有一到收索的题目,就是n个数选出r个数,然后进行全排列,一开始自己做的时候没有选数,只是在输出的时候限制输出r个数,最后导致如果n一样,结果的个数总是一样的。但最后还是看的课件上的答案,其中在每一个满足条件后的输出的后面,都会进行往后退一步,进行其他的选择,看其他的元素是否满足条件。但是我不是很清楚可以退最后一步,那中间的元素呢,确定下来,通过哪一部分的代码可以实现中间元素的重构呢。

这是我这个星期的总结,就在刚才老师说我们看的资料太少了,确实我也有这样的感觉,那些资料大多是没有见过的内容,所以如果仔细读,每一个都看懂的话,真的很慢。老师说,我们可以大概的看,这确实挺好的。而且,我自身原因,常有那么一个时刻,不爱动脑子,所以那样的时刻来临时我一般都看不进去内容。我知道这样不是太好。

这是这个星期的总结。😊

 

 

举报

相关推荐

0 条评论