算法
Tim_c
这个作者很懒,什么都没留下…
展开
-
关于欧几里得算法和Stein算法
最近慢慢复习以前半懂半不懂的东西,关于最大公约数和最小公倍数的问题,是一个很经典的问题,之所以说是一个,是因为最小公倍数就是的求法其实就是求最大公约数,求最大公约数的算法主要有两种,欧几里得算法和Stein算法。 欧几里得算法也就是辗转相除法,这个其实就是我们小学还是初中的时候学的那个,btw,最近越来越发现越是以前习以为常的东西越是美丽,比如最基本的四则运算里面乘除法,运算的方法,如果一点点去看原创 2015-04-24 00:12:37 · 2789 阅读 · 1 评论 -
最大公约数
求两个数的最大公约数,这个是基础中的基础,不过当我第一次看到的时候,我想到的只是循环让一个数加,再被他们除而已,所以第一次看到的时候,顿时觉得编程也是挺美的。int gcd(int a,int b){ int t; while(b!=0){ t = b; b = a%b; a = t; } return a;}虽然挺基原创 2015-04-10 20:58:00 · 721 阅读 · 0 评论 -
全排列算法
全排列算法算是很有用的一个算法。 假设数列是1 2 3 4 那么我们排列的方法就是将从左到右依次和右边的每一个数交换位置,比如1的时候,我们需要把它和后面的2,3,4,依次交换位置,这里的依次交换位置是独立的,也就是说,1和2交换完位置之后要还原回来,1才能和3交换。也就是把一个位置的所有可能都试一遍。 java代码如下:import java.util.Scanner;public clas原创 2015-04-26 16:24:49 · 405 阅读 · 0 评论 -
青蛙过河的问题
关于青蛙过河的问题: 两群青蛙,左右三只,中间有一块空地,左边只能向右跳,右边的只能向左跳,一次只能跳一格或者跨过一个障碍跳一格。 这个有两种思路,一种是先想清楚什么时候会阻塞,这个问题我们可以这样考虑,如果要这些青蛙都不能动的话,那么我们假设有两个同向的青蛙不在它本来的地方却又没有达到对岸的时候相邻在一起了,那么我们可以知道,这个时候就阻塞了,因为后面动从而造成这个局面的青蛙势原创 2015-05-15 21:12:40 · 3064 阅读 · 0 评论 -
递推
递推是一个很简单而实用的方法,思路不难,实质来说就是数学归纳法而已,其实事实上就是把一个复杂的事情简单化,比如经典的斐波那契数列的走楼梯的问题,察觉到问题之间的联系,再通过这个联系将问题解决。 有一个问题是这样的:一个聚会抽奖,每个人都有一张写着自己名字的纸条在箱子里,如果抽到自己的名字那么就中奖了。问全部人都没中奖的概率。 这个问题是递推的一个很好的例子,n个人错排的情况是n-1个人和n-2个原创 2015-05-07 23:17:24 · 561 阅读 · 1 评论 -
2的次幂表示
问题描述 任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。 将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0 现在约定幂次用括号来表示,即a^b表示为a(b) 此时,137可表示为:2(7)+2(3)+2(0) 进一步:7=2^2+2+2^0 (2^1用2表示) 3=2+2^原创 2015-05-19 21:58:31 · 569 阅读 · 0 评论