无标题无名氏No.64766174 只看PO
2024-12-21(六)21:10:56 ID:KokiA32 回应
在图书馆看见了一个敲代码的美少女( ´ρ`)
真好,我也要学敲代码。
无标题无名氏No.66296616
2025-06-10(二)17:16:45 ID: HRGuesf
ui很磨人的,各种控件库,各种前后端分离的架构,这些都是Python之外需要学习的,说实话我不推荐。
而且如果没有学过专门的界面设计的话,会发现自己写出来的ui丑的跟什么一样(至少我是这样的,审美极差),非常打压信心
无标题无名氏No.66297393
2025-06-10(二)19:04:46 ID: m50fHej
遇到了第一个瓶颈
kmp算法始终转不过来
大致能明白思路是在主字符串(长字符)和子字符串(短字符)已经匹配的部分中寻找下一个子字符串开头以跳过中间的匹配。
但是计数的部分总是算不明白。
为什么时间复杂度是O(n+m)也只是稍微找到点思路。
这应该只是单纯的数学问题,小肥数学不好的雷在这里炸了。
无标题无名氏No.66297414
2025-06-10(二)19:08:46 ID: m50fHej
>>No.66295507
>>No.66296616
我还以为ui只要画出来然后把图片导进去就成了( ゚∀。)7
蟒蛇书里有导入图片还是啥的事例,不过小肥还没学到那里。
搜了一下,蹦出来一堆不懂的名词
ui应该是前端的吧
无标题无名氏No.66297601
2025-06-10(二)19:35:53 ID: g5s61uT
>>No.66297414
那当然是抛弃原生ui库使用这个qtdesigner啦,做ui就跟做PPT差不多,自己做着玩也不需要多好看
无标题无名氏No.66300018
2025-06-11(三)00:24:00 ID: HRGuesf
kmp的精髓在于主串的指针不用往前挪。
他的关键我认为有两个,一个是理解next数组,一个是把next数组求出来。
首先就是next数组里的值表明了当发生不匹配的时候,指向模式串的指针应该移到哪一个元素头上,可以看图:指向主串的指针是不变的,指向模式串的指针前移,也可以认为是往后移了整个模式串
无标题无名氏No.66300083
2025-06-11(三)00:32:24 ID: HRGuesf
然后就是求next数组的问题,显然我们可以知道,图里阴影部分的内容应当是相同的,所以我们会有一个前缀串和后缀串的概念,那么为什么要最大呢?因为它不是最大就会漏可能性,如图。
里面蓝色黑色阴影的部分全部一样,显然下面两种可能都是符合的,但是如果按照上面那种方式生成next数组,你就会发现下面的那种情况直接被忽略了,这显然是不合理的,所以要一直找找找,只能长不能短,也就是要找到最大的前缀串等于后缀串的地方。
无标题无名氏No.66300145
2025-06-11(三)00:38:16 ID: HRGuesf
如果还是没搞明白,可以去听听王道408数据结构里的kmp,然后自己在纸上模拟一遍,也可以试试自己推推看。关键问题就是解答next数组的作用,next数组怎么求,为什么要对前缀串后缀串做比较,为什么要选择最大的相同的串。回答这些问题的时候我推荐脑子里画的动图是挪动整个模式串而不是挪动指针,指针对于这个问题我觉得还是比较抽象的。
另外就像我最上面讲的,主串的指针是不会往前挪的,只有模式串的会往前挪,而相同时他们是一起往后挪,所以最差情况下就是主串全部遍历一遍,模式串也遍历一遍,加起来就是O(m+n)