给定一串长度为'n'的字符串。 如何获得长度为r的所有子序列(r <= n)。 我正在考虑使用动态编程来实现它,但无法提供一个好的解决方案。 我想要一个伪代码。

例如。 给定字符串“abc”并且r = 2。

输出:ab ba ac ca bc cb

提前致谢

===============>>#1 票数:3

重要的是要看到所有可能的子串(连续序列)和通常子序列(不一定是连续的)之间的差异。

如果这是真的,那么你被问到的就是所谓的组合 ,首先要估计你给出的字符串长度和子序列的大小。

递归算法是最好的方法:它允许您将子序列的长度作为变量。 你会在另一个线程中找到一个完美的答案。

===============>>#2 票数:1

尝试以下代码(没有伪代码但可以理解,我希望):

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;

string S;
int n;
vector<string> L;


void F(int index, int length, string str)
{
  if (length == 0) {
    L.push_back(str);
  } else {
    for (int i = index; i < n; i++) {
      string temp = str;
      temp += S[i];
      F(i + 1, length - 1, temp);
    }
  }
}

int main()
{
  S = "abcde"; // replace with your string
  n = S.length();
  int k = 3; // or what you want
  F(0, k, string(""));

  int count = 0;

  for (int i = 0; i < int(L.size()); i++) {
    string temp = L[i];
    sort(temp.begin(), temp.end());
    do {
      cout << temp << endl;
      count++;
    } while (next_permutation(temp.begin(), temp.end()));
  }


  cout << endl << "count = " << count << endl;
  return 0;
}

===============>>#3 票数:0

    public static void combinations(String suffix,String prefix){
            if(prefix.length()<0)
                      return;
            System.out.println(suffix);
            for(int i=0;i<prefix.length();i++) {
                 combinations(suffix+prefix.charAt(i),prefix.substring(i+1,prefix.length()));
        }
    }


//call above function like: combinations("","abcd");     

===============>>#4 票数:0

使用递归 - >选择而不选择概念

您必须做出一个决定要么选择要添加到字符串的元素。基于这种方法,我们有这个递归解决方案。

def subse(string,current,index,n):
    if index == n:
        print(current)
        return;
    else:
        subse(string,current+string[index],index+1,n) #pick element and add it to output string that is current
        subse(string,current,index+1,n) #don't pick 

if __name__ == "__main__": 
    subse('abc','',0,3)

  ask by Sashwat translate from so

未解决问题?本站智能推荐: