jmouse 2008-3-31 01:38
2008-03-31 Ruby 测试题(00008)
输入:一串英文字母
输出:由该串字母按不同顺序组成的字符串的个数。
举例1:
输入:a,b,c
输出:6
因为有abc,acb,bac,bca,cab,cba共6个不同的组合
举例2:
输入:a,a,b
输出:3
因为有aab,aba,baa共三个不同的组合
jmouse 2008-3-31 10:06
这题既然出在了这里,当然是想各位用计算机的方式去找出答案。
如果是放在数学论坛,那才需要公式。
bbschat 2008-3-31 11:37
抛砖~
n 中取 m 个
排列公式是 P(n,m) = n! / (n - m)!
组合公式是 C(n,m) = P(n,m) / m! = n! / (m! * (n - m)!)
**** Hidden Message *****
[[i] 本帖最后由 bbschat 于 2008-3-31 12:04 编辑 [/i]]
AllenDang 2008-3-31 14:10
[code]def fact(n)
a, b = 1, 1
n.times {a,b = a*b,b+1}
a
end
def occurs(array)
occursArray = []
array.uniq.each {|e| occursArray << array.grep(e).length}
occursArray
end
def calc(str)
array = occurs(str.split(","))
n = array.inject(0) {|n, value| n + value}
r1 = 1
array.each {|e| r1 *= fact(e)}
fact(n)/r1
end
p calc("a,a,b")[/code]
[[i] 本帖最后由 AllenDang 于 2008-3-31 22:30 编辑 [/i]]
bbschat 2008-3-31 14:57
附加题
**** Hidden Message *****
puts pl(['a','a','c','c'])
[["a", "a", "c", "c"], ["a", "c", "a", "c"], ["a", "c", "c", "a"], ["c", "a", "a", "c"], ["c", "a", "c", "a"], ["c", "c", "a", "a"]]
[[i] 本帖最后由 bbschat 于 2008-3-31 14:59 编辑 [/i]]
AllenDang 2008-3-31 15:50
回复 7# 的帖子
太彪悍!
calebx 2008-4-1 11:03
大佬们,
7楼的递归 看不懂。。。。能加点注释 讲解之类的么?
xavier 2008-4-1 18:42
话说排列组合将在Ruby1.9成为Array的实例方法
1Fuyi 2008-4-1 20:34
很难,主要是一个组合中有多个重复值时,不好处理
很难,主要是一个组合中有多个重复值时,不好处理
blankego 2008-4-1 23:27
沒長數學腦袋:L[code]def permutate s
return s if s.size == 1
s = s.split("") unless s.is_a? Array
result =[]
s.each_with_index do|c,i|
(rest = s.dup).delete_at(i)
permutate(rest).each{|tail| result << c+tail}
end
result.uniq
end
r = permutate 'adbaed'
puts r.size
p r[/code]180
["adbaed", "adbade", "adbead", "adbeda", "adbdae", "adbdea", "adabed", "adabde", "adaebd", "adaedb", "adadbe", "adadeb", "adebad", "adebda", ...,"ebddaa"]
woah, 居然跟 bbschat 的一模一樣 :L
[[i] 本帖最后由 blankego 于 2008-4-1 23:33 编辑 [/i]]
love8909 2008-4-1 23:29
**** Hidden Message *****
f4g546521 2008-11-11 22:44
不错,顶起来210
不错,顶起来
[url=http://ww.88324639.com/article_view.asp?id=19]压面机[/url]
[url=http://ww.88324639.com/article_view.asp?id=19]面条机[/url]
[url=http://ww.88324639.com/article_view.asp?id=19]多功能压面机[/url]
lilongthinker 2008-11-12 18:34
回复 7# 的帖子
ssssss