Dynamic Programming
问题一:Fibonacci 数列求解问题。
一般的会采用递归实现。
/****************************************************
code file : Fibonacci.c
code date : 2014.11.25
e-mail : jasonleaster@gmail.com
code...
分类:
其他好文 时间:
2015-02-04 14:46:41
阅读次数:
259
根据要求实现一个24点的游戏算法,要求如下:
输入:n1,n2,m1,m2
如果这个四个数的运算结果是24,则输出运算表达式
如11,8,3,5
输出:(11-8)*(3*5)=24
解法一:蛮力法,遍历所有的表达式组合,首先遍历所有的数字的排列组合,然后遍历运算符的组合,然后计算出
这个表达式的值,看其是否等于24
测试输入:
5,5,5,1 3,3,7,7
3,3,8,8 1...
分类:
编程语言 时间:
2015-01-05 16:47:57
阅读次数:
182
说明:大部分代码是在网上找到的,好几个代码思路总结出来的
通常写算法,习惯用C语言写,显得思路清晰,但是如果一旦把思路确定下来,而且又不想打草稿,想快速写下来看看效果,还是python写的比较快,也看个人爱好,实习的时候有个同事对于python的缩进来控制代码块各种喷。。。。他觉得还是用大括号合适。。。怎么说呢,适合自己的才是最好的。我个人的毛病就是,写了几天C,到要转到python的时候,代码...
分类:
编程语言 时间:
2014-11-17 17:45:32
阅读次数:
188
问题:
玛雅密码是一串由0、1、2组成的密码,这串数字中如果包含2012,就可以解开末日的大门。给定一串由0、1、2组成的字符串,只有相邻的数字可以交换,求通过最少多少次变换可以得到玛雅密码,并给出这串密码。
思路:
经过很久很久的尝试,放弃了一次性拼凑2012的想法,改用预处理得到所有数字范围中符合玛雅密码的部分,再递归遍历给定的数字串,得到该串所有可...
分类:
其他好文 时间:
2014-10-23 00:10:08
阅读次数:
244
问题:
任何数都能分解成2的幂,比如
7=1+1+1+1+1+1+1
=1+1+1+1+1+2
=1+1+1+2+2
=1+2+2+2
=1+1+1+4
=1+2+4
共有6种分解方式,设f(n)为任意正整数可能分解总数,比如f(7)=6
写个算法,输入数,求出其分解的总数。
...
分类:
其他好文 时间:
2014-10-23 00:09:29
阅读次数:
191
问题:
给定一个自然数N,计算1,2,3...N中,出现1和2的数量。比如1,2,3...10,一共出现了3次,1,2,3...12,一共出现了7次。
思路:
比如计算54321,可以先计算50000,再计算50001-54321中1和2的个数,而后者又可以看成计算4321中1和2的个数,于是简化了问题。其中计算50000的时候,可以计算49999中有多...
分类:
其他好文 时间:
2014-10-23 00:07:47
阅读次数:
200
三点以下的情况就不写了
Python:
import math
class Point( object ):
def __init__( self, x, y ):
self.x = x
self.y = y
def __cmp__( self, other ):
if self.y < other.y:...
分类:
其他好文 时间:
2014-09-13 00:50:24
阅读次数:
409
import math
class Point( object ):
def __init__( self, x, y ):
self.x = x
self.y = y
def __cmp__( self, other ):
if self.y < other.y:
return -1...
分类:
其他好文 时间:
2014-09-12 15:13:23
阅读次数:
190
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。
快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分...
分类:
编程语言 时间:
2014-09-01 17:51:53
阅读次数:
226
二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组。将数组的中间项与T进行比较,可以排除一半元素,范围缩小一半。就这样反复比较,反复缩小范围,最终就会在数组中找到T,或者确定原以为T所在的范围实际为空。对于包含N个元素的表,整个查找过程大约要经过log(2)N次比较。
#!/usr/bin/env ...
分类:
编程语言 时间:
2014-09-01 15:38:33
阅读次数:
198