庞果网在线编程子序列的个数问题ruby解答
来源:互联网 发布:全景展示系统源码 编辑:程序博客网 时间:2024/04/30 01:34
题目地址: http://hero.pongo.cn/Question/Details?ID=111&ExamID=109
题目详情
这个题目前一阵子就看过了,很长时间都没有思路。 想到 应该如何递归呢。首先想到的是按照人的计算思路来计算。
总个数 = 大小为1的自序列的个数 + 大小为2 的子序列的个数 + …… + 大小为n的子序列个数
这种思路也不是不可行,只是太过于浪费内存了, 对计算机来说应该有更好的思路吧。
后来网络搜索了一下,才找到正确的思路。思路见链接:http://www.cnblogs.com/bestDavid/p/subsequence.html
class Sequence def initialize(array) @array = array end def sub_sequence_count return 0 if @array.empty? return 1 if @array.count == 1 equal_last_position = @array[0..-2].rindex(@array.last) if equal_last_position == nil 2 * Sequence.new(@array[0..-2]).sub_sequence_count + 1 else 2 * Sequence.new(@array[0..-2]).sub_sequence_count - Sequence.new(@array[0...equal_last_position]).sub_sequence_count end endenddescribe Sequence do it "should be 1 if sequence is 1" do Sequence.new([1]).sub_sequence_count.should == 1 end it "should be 3 if sequence is [1, 2]" do Sequence.new([1, 2]).sub_sequence_count.should == 3 end it "should be 5 if sequence is [1, 1, 2]" do Sequence.new([1, 1, 2]).sub_sequence_count.should == 5 end it "should be 6 if sequence is [1, 2, 1]" do Sequence.new([1, 2, 1]).sub_sequence_count.should == 6 end it "should be 11 if sequence is [1, 2, 1, 2]" do Sequence.new([1, 2, 1, 2]).sub_sequence_count.should == 11 endend
- 庞果网在线编程子序列的个数问题ruby解答
- 庞果网在线编程字符串消除问题ruby解答
- 庞果网在线编程之最长有效括号长度问题ruby解答
- 庞果网在线编程之数组排序ruby解答
- 子序列的个数 --- 庞果网
- 子序列的个数
- 子序列的个数
- 子序列的个数
- 子序列的个数
- 子序列的个数
- 庞果网在线编程覆盖数字问题ruby答案
- 数组子序列的个数
- 公共子序列的个数
- 庞果网建立基站问题ruby解答
- 庞果网回文数问题ruby解答
- 最长公共子序列的Ruby实现
- 连续子序列最大和问题的四种经典解答
- 动态规划--子序列的个数
- JAVA面试题解惑系列(六)——字符串(String)杂谈
- 2行代码格式化显示日期
- JAVA面试题解惑系列(七)——日期和时间的处理
- oracle字符集(二)
- HDU--杭电--2066--一个人的旅行--最短路
- 庞果网在线编程子序列的个数问题ruby解答
- HashMap与HashTable区别
- [Ajax]ajax入门
- TCP创建连接和关闭连接
- Dos命令总结
- 结构体操作
- 学习PLS_INTEGER,BINARY_INTEGER,INTEGER,NUMBER的概念及区别以及在性能方面的差异
- 【Unity Shaders】Diffuse Shading——创建一个基本的Surface Shader
- android SQliteDatabase 数据的更新问题