算法
文章平均质量分 80
漏れた玩具
这个作者很懒,什么都没留下…
展开
-
用天平找次品的算法题,即三等分算法
没事发道简单算法题吧。。最近都在撸python小项目或者爬虫机器学习之类的,都快把C++忘了有n个硬币,其中1个为假币,假币重量较轻,你有一把天平,请问,至少需要称多少次能保证一定找到假币这道题应该很多人听过,解决方法很简单。不断三等分,为什么要是3这个数字呢?因为两两比较只有三种情况,<, > 或者=三等分时,有三种情况:1.n % 3 == 02. n % 3 == 13. n %...原创 2018-06-11 13:09:12 · 4978 阅读 · 1 评论 -
经典DP:测试鸡蛋承受力
现有鸡蛋N个,M层楼,要测试这批鸡蛋的承受力, 即测试这批鸡蛋最多从几楼扔下去后没事,最少测试几次能保证测出蛋的承受力。 这题要“最少”“保证”测出这批蛋的承受力。因此,我们要找到所有方式的最坏情况中次数最小的。代码思维上可以这么理解for 方式i in 所有方式: for 情况j in 所有情况: 通过找到所有情况中最大次数,找到最坏情况 ...原创 2018-11-03 15:43:36 · 937 阅读 · 0 评论 -
数的读法
python看累了,去看了下以前自己写的C++算法代码,感觉写得复杂了,所以改进了下思路。顺便做一次记录。数的读法这题,难度不是很大,但是考虑的情况较多,以前写的很费时间。这次想写得短一些/* 题目;输入数字,打印它的中文读音 0要做特殊处理,因为0读出来不会加位数。且多个0连续时只读一次 1要做特殊处理,遇到十时,不读。十亿。不是一十亿, 位数的特殊情况:全为0时可以不...原创 2018-07-22 21:37:19 · 1385 阅读 · 2 评论 -
最大的算式
题目描述 问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大。因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号。例如: N=5,K=2,5个数字分别为1、2、3、4、5,可以加成: 1*2*(3+4+5)=24 1*(2+3)*(4+5)=45 (1*2+3)*(4+5)...原创 2018-08-03 19:50:52 · 1496 阅读 · 1 评论 -
表达式的值, 表达式计算器
问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。输入格式 输入一行,包含一个表达式。输出格式 输出这个表达式的值。样例输入1-2+3*(4-5)样例输出-4数据规模和约定 表达式长度不超过100,表达式运算合法且运算过程都在int内进行。 这道题很偏向应用,因为这是计算器的常见写法。或者说底层计算器...原创 2018-07-25 23:16:46 · 676 阅读 · 1 评论 -
输出矩阵每行都出现的字符
没事刷一道算法题目,这是道水题,但还是挺有趣的题目描述输入一个n*m矩阵,输出矩阵每行都出现的字符,如果有多个,输出字典序最小的字符思路都写注释里了/* 输出每行都出现的字符,如果有多个,输出字典序最小的 思路:记录每个字符最后一次出现的行数(通过判断每行上次出现是在上一行) map可以输出字典序最小的, 底层红黑树会自动排序 伪代码: 遍历数组第 i 行 遍...原创 2018-06-26 21:59:00 · 312 阅读 · 0 评论 -
编辑距离DP算法
偶然看到这道经典题,顺便复习下DP, 由于懒得做图,所以,需要图片或者其他讲法,请参考这篇https://blog.csdn.net/chichoxian/article/details/53944188。 可能你需要配合这位作者的图片才能更好理解有两个字符串str1跟str2, 设他们的最短距离为str1变为str2的操作最小次数,有以下三种操作1. 插入字符,如abc -> abcd2...原创 2018-06-30 21:23:22 · 1285 阅读 · 0 评论 -
约瑟夫环
没事看看以前的算法看到约瑟夫环这道题,是看了https://blog.csdn.net/u011500062/article/details/72855826才学会递推公式的,记得当时一开始用循环链表超时,后来自己的想法是用每次取余,再前移消掉那些项。也很麻烦,后来百度了之后才知道约瑟夫环N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的...原创 2018-06-24 22:09:24 · 192 阅读 · 0 评论 -
对于DFS,BFS,A*与IDA*等寻路算法的总结跟感悟
一周前看见了贪吃蛇AI算法,受到震撼于是就把以前的win32贪吃蛇加了个AI实现,让我这个渣渣写了好几天才完工,终于能吃完全屏了,虽然离自己看的那个贪吃蛇AI的gif还有些距离emmmm,贪吃蛇AI不可避免的用到了寻路算法,所以今天当做复习总结提一提, 不说了,进入正题吧,常见的搜索有深度优先搜索,广度优先搜索,迭代加深搜索,双向广度优先先搜索,A*搜索,IDA*搜索等,这些搜索分为盲...原创 2018-01-01 12:17:57 · 11914 阅读 · 2 评论 -
双指针算法以及各种应用
这里双指针指的是在同一个可迭代对象a中使用两个迭代器(下面用i,j)。反正就要能类似数组这样使用索引i, j来得到对应的值a[i], a[j],然后通过移动i跟j达到目的。下面以数组为例常见的使用方法有几种:1. i跟j在数组的两边开始,用来把数组分成两部分这个我们早遇到过了,我第一次遇见它被用来分成大于最左边的数(基准数)跟小于最左边的数两部分。不过它结合了分治法导致你可能没发现...原创 2018-11-27 13:23:10 · 1100 阅读 · 0 评论