#include <iostream>
#include <string>
#include <vector>
using namespace std;
void converter(vector<char>keypad[],int num[], int index, string result, int size_of_num){
if(index == size_of_num){
cout << result << " ";
return;
}
int digit = num[index];
int size_of_keypad = keypad[digit].size();
for(int i=0; i < size_of_keypad; i++){
converter(keypad, num, index + 1, result + keypad[digit][i], size_of_num);
}
}
int main(){
vector <char> keypad[] = {
{},{},{'a','b','c'},
{'d','e','f'},
{'g','h','i'},
{'j','k','l'},
{'m','n','o'},
{'p','q','r','s'},
{'t','u','v'},
{'w','x','y','z'}};
int numbers[] = {2,3,4};
int size_of_num = sizeof(numbers);
converter(keypad, numbers, 0, string (""), size_of_num );
return 0;
}
我尝试运行这段代码,它将电话号码转换为单词。我在这个问题中使用向量和递归函数。但我不确定这只是内存溢出还是完全是其他原因。
我尝试在线搜索以解决此问题,并找到了正确的代码,但他们所做的一切都是相同的,唯一不同的是变量名称。我只是不明白出了什么问题。
你计算的尺码错误
int size_of_num = sizeof(numbers);
应该是
int size_of_num = sizeof(numbers)/ sizeof(numbers[0])
甚至
int size_of_num = std::size(numbers);