方法一、
神奇的双重while循环。
注:显然可以利用这种方法,打印出任意一个N维数组的任意组合。
方法二、递归(实质就是DFS)
实例代码:
#include<iostream>
#include<cstring>
using namespace std;
//键盘数字上的字符
char c[10][10] = {
"", "", "ABC", "DEF",
"GHI", "JKL", "MNO",
"PQRS", "TUV", "WXYZ"};
//0到9每个数组键上字符的个数
int total[] = {0, 0, 3, 3, 3, 3, 3, 4, 3, 4};
const int TelLength = 3; //电话号码的位数
int number[TelLength];//每位电话号码的数字
int answer[TelLength]; //每位数字上字符的下标
//方法一
void OutputTelephone(int number[])
{
while (true)
{
int k = TelLength - 1;
//一次循环一次从第k个键向前移动一位
while (k >= 0)
{
for (int i = 0; i < TelLength; i++)
cout << c[number[i]][answer[i]] << " ";
cout << endl;
if (answer[k] < total[number[k]] - 1)
{
//第k个键移动
answer[k]++;
break; //这里只要有一个键的一个位置发生一次变化,就退出,打印一次。
}
else
{
//第k个键移动完毕,回到0,开始遍历上一个键。
//此时,继续内部循环。下次循环,处理上一个键。
answer[k] = 0;
k--;
}
}
if (k < 0)
break;
}
}
//方法2
void RecursiveOutput(int number[], int answer[], int index)
{
if (index == TelLength)
{
for (int i = 0; i < TelLength; i++)
cout << c[number[i]][answer[i]] << " ";
cout << endl;
return;
}
//上下来回反弹的都以递归啊,类似于dfs
for (answer[index] = 0; answer[index] < total[number[index]]; answer[index]++)
{
RecursiveOutput(number, answer, index + 1);
}
}
int main()
{
int number[] = {3, 4, 5};
OutputTelephone(number);
RecursiveOutput(number, answer, 0);
return 0;
}
分享到:
相关推荐
1. **词汇查询**:用户可以输入汉字或英文单词,快速查找其对应的翻译,这对于学习者来说是基础且必不可少的功能。 2. **例句展示**:为了帮助用户更好地理解词汇在实际语境中的用法,字典软件可能会提供相关的例句...
5岁以下至12岁以上的儿童都是英语启蒙和进阶学习的重要阶段,不同的年龄段可能对应不同的学习需求和教学方法。 2、英语水平认知:问卷第二部分询问家长对孩子英语水平的了解,这有助于评估当前孩子的英语基础,以便...
这些练习题适合初级英语学习者,尤其是儿童,他们可以通过完成这些练习来增强对基本动物单词的记忆,并学会用英语询问和回答关于数量的问题。 在第一部分3.1b中,主要是连线题,让学生将英文单词与对应的动物图片...
设计任务主要包括:实现一个能够查询英语单词并显示其对应汉语翻译的软件;提供单词发音功能;支持用户添加、删除和编辑单词;具备搜索历史记录和收藏功能;同时,软件应具有友好的用户界面,便于操作。 1.2 选题...
本项目旨在利用Python技术开发一款英汉电子词典,以满足用户随时随地查询英语单词的需求,提高学习效率。 1.2 研究的意义 传统纸质词典的便携性不足,而网络化的电子词典则可以突破这一限制,使用户无论何时何地都...
20. **多动作步骤**:类似问题在表3.2和3.3的Steps2,3中同样存在,需拆分步骤。 21. **Primary Actor**:表3.3中同样需要添加缺失的Actor。 22. **Alternative Flows判定**:表3.3中也需增加进入Alternative Flow...
2. **过滤停用词**:可选操作,用于去除一些常见的词汇如英语中的“of”、“the”或中文中的“的”、“地”。这些词汇在文本中非常常见,但对于搜索来说意义不大,过滤掉这些词汇可以提高搜索效率。 3. **构建文档...
- 去除停用词:停用词是指那些在文本中非常常见但对信息检索帮助不大的词汇,如英语中的“the”、“and”等,中文中的“的”、“是”等。去除停用词有助于减小索引的大小并提高搜索效率。 - 将处理后的信息封装到`...
- 首先定义了一个全局数组 `$numTable` 来存储数字及其对应的英文单词。 - 定义了 `$commaTable` 用于存放千位、百万位等分隔符的英文表达。 - 定义了 `$moneyType` 用于指定货币单位的英文单词。 - 调用 `...