算法
文章平均质量分 67
年少无知的无知少年
相看两不厌,唯有敬亭山。
展开
-
矩形土地均匀分成方块,分出的方块面积尽可能大
一块矩形土地,长为length, 宽为width,假设length>width。进行均匀分块,使得分块之后的方块面积最大。解决思路是基于分而治之(divide and conquer)的思想先以宽为边长画一个方块出来,这个方块肯定是最大的方块,剩下的矩形做同样的操作。def soilsplit(length,width): while length>=width:原创 2017-07-22 14:37:34 · 2055 阅读 · 0 评论 -
python 迪杰斯特拉算法
python语言实现 最短路径算法 Dijsktra算法:infinity=float('inf')graph = {'a': {'fin': 1}, 'b': {'a': 3, 'fin': 5}, 'start': {'a': 6, 'b': 2}}costs ={'a':6,'b':2,'fin':infinity}parents={'a':'start','b':'start转载 2017-07-31 16:20:18 · 802 阅读 · 0 评论 -
python 列表递归求和、计数、求最大元素
利用python的递归来执行求和、计数、求最大元素的方法简直溜到爆,这里粘贴一下代码:列表的递归求和:def sum(list): if list==[]: return 0 return list[0]+sum(list[1:])测试:print sum([3,4,2,3])12列表的递归计数:def countElem(list):原创 2017-07-22 15:25:32 · 13833 阅读 · 1 评论 -
快速排序 递归调用
快速排序将数组进行分解,对两个子问题进行排序。快速排序首先要找到划分数组的基准,我们以数组的第一个元素为例。然后将数组划分为大于该基准的数组与小于该基准的数组。分别再对两个子数组进行快速排序。python代码如下:def quicksort(list): if len(list)<2: return list else: pivo原创 2017-07-22 15:46:45 · 1663 阅读 · 1 评论 -
十进制转二进制,短除法与位运算两种方法
短除法:比如十进制整数1919/2=9……19/2=4……14/2=2……02/2=1……0所以最后计算的结果就是10011短除法代码:#include using namespace std;int main(){ int n; while(cin>>n) { int cnt=0; while(n!=1)原创 2017-07-19 15:15:55 · 15074 阅读 · 1 评论 -
两字符串最长公共子序列的长度
两个字符串求最长公共子序列的方法,为与最长公共子串相区分,注意这里的说辞。公共子串说的是字符串是连续相同的,中间没有夹杂其他字符;公共子序列说的是原字符串中去除一部分字符后的字符串相同。import numpydef MaxConsequence(stringa,stringb): lena=len(stringa) lenb=len(stringb)原创 2017-07-24 16:51:36 · 539 阅读 · 0 评论 -
c++ 找数组中两个元素,其和等于固定值sum,并输出
周二去中兴面试的,笔试题做的是选择填空,加一道编程题。编程题求得是数组中两个元素,求和等于固定值sum。这题最简单的方法当然是采用双重循环,进行遍历。但是这种方法的效率无疑是比较低的。复杂度是O(n^2)。所以我就从另外一个角度进行分析:1. 先对数组进行排序;2. 在排序数组的基础之上,对数组进行遍历。通过分步的方法,可以有效地提高效率。下面进行详细分析。一,首先讲得是排原创 2017-08-12 11:09:07 · 3316 阅读 · 0 评论 -
c++ 类模板 用栈实现队列
c++语言可以利用STL库中定义的栈类实现队列的操作。包括入队列、出队列操作。下面就是用两个栈实现队列的上述操作。其中涉及到类模板的知识,不清楚的可以去其它地方进行查询。#include #include using namespace std;template class CQueue{public: //CQueue(void); //~CQueue(v转载 2017-08-05 15:25:31 · 886 阅读 · 0 评论