通过动态规划获得字符串的所有子集-编程竞赛,面试
Get all Subsets of String through Dynamic Programming - Programming Contest,Interview
我有一个字符串比如123
我需要输出为
1、2、3、12,13123。
我知道这可以实现使用动态规划。所以我需要帮助。
输入字符串的长度范围是10 ^ 6。
这个问题的变化:My next problem is
我必须只打印那些数字是连续的子集。现在我的答案变成了
1、2、3,23123。注意:13不会出现在这里,因为1和3在输入字符串"123"中不是连续的。
如果不是动态规划,任何其他解决方案也是可以的。记住输入字符串的长度是10^6,所以解应该是0 (length)
提示:考虑使用后缀数组来构建子字符串。使用后缀树可以降低查找O(n)
后缀的复杂性。
一种可能的方法:使用两个循环遍历字符串。外部循环总是在字符串中设置子字符串的开头,内部循环从这个起始位置开始递增,直到字符串的末尾。现在剩下的唯一一件事,就是使用string::operator[]
选择字符串的字符并打印/存储它们或做任何你想做的事情。
编码由你决定;)
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 模板元编程:如何将参数包组合成新的参数包
- Qt Q串行端口未编程设备未关闭
- 模板元编程 - 尝试实现维度分析
- 我是编程新手
- 在子集化后将包含索引号的列表列表映射到标准索引序列
- 显示字符串的集合和子集
- C++编程从外部文本文件定义数组大小
- 了解算法的性能差异(如果以不同的编程语言实现)
- 使用 Gtkmm 以编程方式选择 Gtk::TextView 中的文本
- 如何将可变参数模板转换为多个单个模板?(C++竞争编程调试模板)
- 使用命名空间正确编程
- C++编程:运算符重载中的引用如何工作?
- Arduino 模块化编程与全局和设置
- C++ 运算符修改/元编程策略,用于不那么冗长的语法
- 带1D阵列USACO培训的动态编程:子集总和
- 使用gtest框架在运行时以编程方式重复确定的测试子集
- 通过动态规划获得字符串的所有子集-编程竞赛,面试