计算机算法
imssshan
少年~好好写代码~
展开
-
求最大公约数gcd算法
求两个正整数a,b最大公约数方法较常用的是欧几里得提出的辗转相除法 假设a=b*k+r …….(1),则gcd(a,b)=gcd(b,r)…….(2); 证明: 设c=gcd(a,b),则a=c*n, b=c*m 根据上式(1) r=a-b*k=c*n-c*m*k=(n-m*k)*c 此时需要证明c=gcd(b,r),由于b=c*m,r=c*(n-m*k),所以只需要证明m与n-m*k互原创 2016-09-21 16:57:04 · 1321 阅读 · 0 评论 -
<LeetCode>Largest Divisible Subset
问题描述 Largest Divisible Subset Given a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of elements in this subset satisfies:Si%Sj = 0 or Sj%Si = 0.算法分析 利用一个性质原创 2016-10-15 17:07:59 · 351 阅读 · 0 评论 -
<leetcode>Money Robbing
问题描述 A robber is planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have securi原创 2016-10-15 21:05:51 · 1246 阅读 · 0 评论 -
逆序数计数问题
逆序数问题的形化表示 输入:一组n个不同的数的序列A[n] 输入:逆序数对数记为 num,如果 i a[j] ,那么就是逆序数对 逆序数技术问题是排序算法的某种变形。方法一:暴力破解法(类似于冒泡排序) 思路:列举出所有的数组对,一共有 n*(n-1)/2 对,判断这些是否为逆序数对数。 时间复杂度:O(n^2) 方法二:运用divide-and-conquer,借鉴归并排序或者原创 2016-10-02 14:01:03 · 1936 阅读 · 0 评论 -
最近点对问题
该问题的形式化表示: Input:平面上有n个点 Output:欧式距离最近的点对1 暴力破解法,列举出这个平面所有的点对,找出最小的那个点对,所需要的时间复杂度为O(n^2)2 用分而治之的思想 (1) 将平面上的点均分成左右两部分 分别求出左,右两边最近点对的距离d1,d2,δ =min(d1,d2) 然后我们需要考虑的是,是否存在来自分割线左右两侧的点其距离比 δ 还小,所以也需原创 2016-10-02 16:05:48 · 429 阅读 · 0 评论