ВОЗВРАТ все подпоследовательности клавиатуры - PullRequest
0 голосов
/ 28 мая 2020

У нас есть клавиатура телефона. Используя его, мы должны найти все возможные строки, которые можно составить, используя цифры ввода n. Мы должны возвращать строки, а не печатать их. Для 0 и 1 вернуть пустую строку. Придется использовать рекурсию.

Например, для 23 вывода будет: - ad ae af bd be bf cd ce cf

Я много пытался ответить на этот вопрос, но я не собираюсь кодировать. Пожалуйста, помогите

1 Ответ

2 голосов
/ 28 мая 2020

То, что я буду делать, рекурсивно вызовет создание строки

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;
}

...