查看完整版本: 2008-03-31 Ruby 测试题(00008)

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共三个不同的组合

ops 2008-3-31 09:14

呃,排列组合的公式都全还给老师了~

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]]

jmouse 2008-3-31 14:22

附加题,顺便帮我把那些排列也打出来^_^

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# 的帖子

太彪悍!

bob21 2008-3-31 20:31

很好很强大!我来看看code!

calebx 2008-4-1 09:53

向前辈们学习!!!!

calebx 2008-4-1 11:03

大佬们,
7楼的递归 看不懂。。。。能加点注释 讲解之类的么?

jayliu 2008-4-1 12:08

回复 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 *****

5swords 2008-4-21 11:19

see it

punkpopb 2008-10-7 16:20

脚本虽然慢了点,但是还是一直在追赶!哈哈

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
页: [1]
查看完整版本: 2008-03-31 Ruby 测试题(00008)