没有合适的资源?快使用搜索试试~ 我知道了~
电话号码对应英语单词1
需积分: 0 0 下载量 134 浏览量
2022-08-03
18:03:21
上传
评论
收藏 316KB PDF 举报
温馨提示
试读
6页
1. #include<iostream> 2. using namespace std 4. const int MaxLength = 9 9. {
资源详情
资源评论
资源推荐
原始问题如下:手机上面的数字键均对应了几个字符,譬如 2 对应了 a,b,c。问题是当输入
一段数字后,求出所有可能的字符组合,(可以想象一下发短信时候的状况,每当按几个数
字键后,均给出可能的汉语拼音,当然这个要求就更高了,本题只要求给出所有可能的组合)。
举个例子输入 4,2 键后,则给出 GA,GB,GC,HA,HB,HC,IA,IB,IC 组合。
当然对于大多数人来说就是几层循环就搞定了,每层遍历,内部输出。但是我们当然是追求
更高的算法了。若按普通做法,那么每多按一个数字就会导致再添加一个 for 循环了,明显
不合适。下面给出让你佩服的方法:
[cpp] view plaincopy
1. #include<iostream>
2. using namespace std;
3.
4. const int MaxLength = 9;
5. char c[10][10] = {"", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV",
"WXYZ"};
6. int total[10] = {0,0,3,3,3,3,3,4,3,4};
7.
8. int main()
9. {
10. int number[MaxLength] = {2,3,4}; //本例输入数字 2,3,4
11. int answer[MaxLength] = {0};
12. int len = 3;
13.
14. while(true){
15. for(int i = 0; i < len; i++)
16. printf("%c", c[number[i]][answer[i]]);
17. printf("\n");
18.
19. int k = len - 1;
20. while(k >= 0){
21. if(answer[k] < total[number[k]] - 1){
22. answer[k]++;
23. break;
24. }
25. else{
26. answer[k] = 0;
27. k--;
28. }
29. }
30. if(k < 0)
31. break;
32. }
33. return 0;
34. }
傅融
- 粉丝: 26
- 资源: 333
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0