啊哈!算法
这本书的学习
喵哈木
这个作者很懒,什么都没留下…
展开
-
关于计算机算法设计方法的思考
想成男女配对,除了最开始最容易想到的列举全部情况的方法,我们其实还可以就是如“啊哈算法”里面描述的那样,给出一个情景。这时就可以多余的人去找有伴的人,问他能不能去找自己另外的熟人。相反的是我认为这反而是设计的根本。人能思考的逻辑问题计算机一般都可以实现,重要的是如何把问题掰碎扔给计算机解决。但是我们只要能让多余的人去找有伴的人,问他能不能去找自己另。只要配对的人中有一个人能找到自己一个没人配对的可以配对的伴侣就可以了。暴力枚举其实一般人人最开始想到的也是这个,而不是计算机的独有的。关注最后配对的情况。原创 2024-10-01 12:40:35 · 86 阅读 · 0 评论 -
排序算法的理解
计算机不能直接继承不等式的传递性特征,这个时候才用递归调用去人为的分成不同的部分。或者说,一部分已经大致排序好的数放在一边,另外一边再排。排序算法借鉴了数学里面的不等式的思想。原创 2024-10-01 08:16:03 · 145 阅读 · 0 评论 -
汉诺塔的理解
一张牌的时候放在C区域,2张若第一张放B区域了,2张的第二张就是C区域了,B区域的那张牌只能放在C区域的第一张牌上面了,不然就只能按大到小给放回牌堆了,或者无意义的乱。(还可以这样解释,堆起来空起来的位置可以是要目标大盘放置的位置,只是没有物理的把盘子给交换,所以只需要调整位置即可,圆盘 A B C,C堆起来了,把B和C交换位置A C B,如果不看标记,把A的牌堆第一张牌放到大盘B上,C再借A再放一次自己的造型到B上,就是牌堆数量为n + 1的情况了)两张牌则是B区域开始,三张又是C区域开始了。原创 2024-09-25 17:58:01 · 305 阅读 · 0 评论 -
一个题目多用几个解法可能会领会新的东西
乍一看桶排序法去重很难,但是若是先学过桶排序法,这里试图运用桶排序法就容易些。如果想到的话一定要积累。一个题目多用几个解法,反而会更好。可以领会这个方法的其他优点。全凭名词搜索会很累的。原创 2024-07-29 18:26:36 · 107 阅读 · 0 评论 -
注意结构和复制粘贴后的就情况修改
【代码】注意结构和复制粘贴后的就情况修改。原创 2024-08-15 08:44:02 · 83 阅读 · 0 评论 -
编程事情1
长串代码更要注意易错点(就那么几个)不要想别的事情,在打代码的时候。原创 2024-09-19 19:42:10 · 148 阅读 · 0 评论 -
多举例子!
由于之前的经验,我检查的时候也到while循环这里了,但就是没有检查出问题来。原创 2024-08-06 12:43:14 · 111 阅读 · 0 评论 -
一些错误(凑字数)
原本想减枝的,但是忽略了逻辑上就是减去所有的数的“笔画”(前期没思考完整,随随便便画一下就完了)后来边做边“优化”就出现了这样的问题。这里也是,本来是break的,就是前期规划没做好,做的的时候想不到全局,于是就以为break就对了,其实只有i 和j最开始的break是对的,这里的是continue才对,继续到后面的。等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)只有一行,表示能拼成的不同等式的数目。原创 2024-08-11 13:58:56 · 357 阅读 · 0 评论 -
变量的注意或许需要调试
错误类型还是一样的,还是要多练。另外就是变量值这里,举例子的时候可能也只是逻辑上的,而忽视了具体的,最好把变量的值的变化写下来或者使用IDEL的debug功能。输入一个自然数N(1原创 2024-08-13 10:27:12 · 142 阅读 · 0 评论 -
还是解救小哈但是bfs
但是我发现自己老早之前试验了几个很近的点(给的标准输入和输出的改动下)都是对的,我就觉的是把墙算进去了,因为按照数学归纳法的启示,这应该像多米诺骨牌一样证明正确性的,毕竟直接判断对错都是正确的,唯一特殊的可能就是比较近的地方没有墙壁。还有这提示我即使前面几个是对的最后答案是错的也有可能是从一开始就是错的。后来printf输出结果的方法才找对了问题的关键所在。这次用了之前总结的经验果然得到了很大的解决,只有。原创 2024-08-16 15:16:22 · 386 阅读 · 0 评论 -
在写代码时的一些错误(2)
由于我的设计是这样,所以和第一个和stk1.data[1]相同的数才会出现这种情况。这个操作里面的可能错误的部分(如果两个(if else)都有就不知道是谁的问题了)这里面的问题,但是我没有看出来,所以动用了printf打印结果的方式来检查错误。突然发现这里的5直接跑到栈里面了,本来收完一轮牌后是到2号线出牌了。stk1.top --导致stk1.top == 0,所以启动了。因为5是收完牌给出去的 stk.top搜索到1的位置的时候。看了这么多问题——其实都是临界值问题。放牌的顺序调整过来了后。原创 2024-08-04 14:58:39 · 308 阅读 · 0 评论 -
减少代码错误的方法
这也是看似是,而实际上,你若去举个例子很快就能发现问题。等价是需要证明的,而不是想当然的以为然就可以的。就如下面这个求割点的。原创 2024-09-20 14:40:30 · 229 阅读 · 0 评论 -
在写代码时的一些错误
我的本意就是tail放在head的后面先,再在给q1.data[head]赋值的过程中tail,然后我用i来了个等效替代,毕竟head走不开,但是我忽略了第一次head在的位置就是没有的,赋值进去的时候,这个时候tail更不需要走。这样的错误后面还有。这是正确的代码(1 1 1 1 1 1 1 1 1 1 1 1这样的例子当然会死循环 ),但是刚写出来的时候却有十分多的错误。也是忽略了第一次的空栈是要先录入的,stk1.top不需要移动。我想别的情况去了结果把这个情况——把回收的牌给放回自己牌堆的情况。原创 2024-08-04 14:16:35 · 185 阅读 · 0 评论 -
C语言字符录入的一些问题
在这个例子中,当 i 等于 2 时,break 语句会被执行,循环会立即结束。因此,i++ 在最后一次迭代中不会被执行,但循环会在 i 等于 2 时提前终止,所以实际上 i 的最终值将是 2。原创 2024-08-20 08:45:27 · 169 阅读 · 0 评论