内有注释
2023-07-27 11:00:41
发布于:河北
点开查看
#include<bits/stdc++.h>
using namespace std;
//0,1 下标 按键没有任何字母
string key[10]{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
int num[10]{0,0,3,3,3,3,3,4,3,4};//每个按键字母数量
int n,a[10];
//按下press键,拼接到res答案中
void dfs(int press,string res){
//所有的键按完情况输出
if(press == n+1){
cout<<res<<"\n"; //按键所以组合的答案
return ;
}
//按下press 的所有字母,遍历字典序
for(auto it :key[a[press]]){ //a[press] 第press键,key[a[press]] 按下键的字符串
dfs(press+1,res+it); //去按下一个键,当前按下的字母拼接到 res
}
}
int main(){
cin>>n;
int comb = 1;
for(int i=1;i<=n;i++){
cin>>a[i];
comb*=num[a[i]]; //a[i]是第二个键,num[a[i]] 字母数量
}
cout<<comb<<"\n"; //输出组合的数量
dfs(1,""); //代表 已经确定1个键,字母拼接到空串中
return 0;
}
全部评论 3
太棒了!
2023-07-27 来自 河北
0太棒了!
2023-07-27 来自 河北
0太棒了!
2023-07-27 来自 河北
0
有帮助,赞一个