c++[001]
Posted 心砚时间
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++[001]相关的知识,希望对你有一定的参考价值。
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
using namespace std;
int main(){
string ss;
string s[]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
vector <string> v1(s,s+8);
queue <string> q1;
cout<<"请输入一个数字字符串(2-9):";
cin>>ss;
for(int i=0;i<ss.length();i++){
int j=ss[i]-'0';//得出字符串里每个数字
string sss=v1[j-2];//得出数字所对应的字母序列
if(i==0){
string init_s;
for(int k=0;k<sss.length();k++){
init_s=sss[k];
q1.push(init_s);
}
}
else{
string fr=q1.front();//记录队首元素
while(fr.length()<i+1){//判断队头元素的长度
q1.pop();
for(int k=0;k<sss.length();k++){
q1.push(fr+sss[k]);
}
fr=q1.front();//更新队头
}
}
}
vector <string> v2;
while(!q1.empty()){
v2.push_back(q1.front());
q1.pop();
}
cout<<"它能表示的所以字母组合有:"<<endl;
vector <string>::iterator it;
for(it=v2.begin();it!=v2.end();it++){
cout<<*it<<" ";
}
cout<<endl;
return 0;
}
本题有两种思路,今天推送的为用队列的思想,另一种方法为回溯法,感兴趣读者请自行研究。
本题还用到了c++中STL里的vector容器和queue。
代码主要思想为:将第一个数字对应的字母入队,之后将队首元素与下个数字对应的字母分别匹配,最终队中元素即为所求。
以上是关于c++[001]的主要内容,如果未能解决你的问题,请参考以下文章
此 Canon SDK C++ 代码片段的等效 C# 代码是啥?
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情