RETURN所有的键盘子程序。

问题描述 投票:0回答:1

我们有一个电话键盘。使用它我们必须找出所有可能的字符串,可以用输入的数字n来制作。我们必须返回字符串,而不是打印。对于0和1返回空字符串。必须使用递归。

例如对于23输出将是:- ad ae af bd be bf cd ce cf .

我尝试了很多做这个问题,但我不是代码。请帮助

c++ string recursion cartesian-product
1个回答
1
投票

我将做什么递归调用创建一个字符串

class Solution{
public:
   map<int,string> KeyMapping;
   void generate_string(string &current, vector<int> &keys, vector<string> &ans){
      if(current.size() == keys.size()){
          ans.emplace_back(current);
          return;
      }
      int index = (int)current.size();
      for(char i: keyMapping[keys[index]]){     
         current+=i;
         generate_string(current,keys,ans);
         current.pop_back();
      }      
   }
};

要使用它在 main()

int main(){
  vector<int> keys = {1,2};
  string res = "";
  Solution obj;
  // Set keymapping to obj.keyMapping
  vector<string> all;
  obj.generate_string(res,keys,all);
  for(auto i: all)cout << i << " ";
  return 0;
}

© www.soinside.com 2019 - 2024. All rights reserved.