`
kmplayer
  • 浏览: 509958 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

3.2电话号码对应英语单词

阅读更多
方法一、
神奇的双重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;
}

分享到:
评论

相关推荐

    教育学习-汉英字典软件 v3.2.79.zip

    1. **词汇查询**:用户可以输入汉字或英文单词,快速查找其对应的翻译,这对于学习者来说是基础且必不可少的功能。 2. **例句展示**:为了帮助用户更好地理解词汇在实际语境中的用法,字典软件可能会提供相关的例句...

    3.2外教在线教育调查问卷模板(线下)-石韫新-2017-7-7.docx

    5岁以下至12岁以上的儿童都是英语启蒙和进阶学习的重要阶段,不同的年龄段可能对应不同的学习需求和教学方法。 2、英语水平认知:问卷第二部分询问家长对孩子英语水平的了解,这有助于评估当前孩子的英语基础,以便...

    朗文英语1b chapter 3练习题4精选.doc

    这些练习题适合初级英语学习者,尤其是儿童,他们可以通过完成这些练习来增强对基本动物单词的记忆,并学会用英语询问和回答关于数量的问题。 在第一部分3.1b中,主要是连线题,让学生将英文单词与对应的动物图片...

    JAVA电子英汉词典课程设计.doc

    设计任务主要包括:实现一个能够查询英语单词并显示其对应汉语翻译的软件;提供单词发音功能;支持用户添加、删除和编辑单词;具备搜索历史记录和收藏功能;同时,软件应具有友好的用户界面,便于操作。 1.2 选题...

    基于python的英汉电子词典软件源码数据库论文.docx

    本项目旨在利用Python技术开发一款英汉电子词典,以满足用户随时随地查询英语单词的需求,提高学习效率。 1.2 研究的意义 传统纸质词典的便携性不足,而网络化的电子词典则可以突破这一限制,使用户无论何时何地都...

    B对A组需求评审表单反馈1

    20. **多动作步骤**:类似问题在表3.2和3.3的Steps2,3中同样存在,需拆分步骤。 21. **Primary Actor**:表3.3中同样需要添加缺失的Actor。 22. **Alternative Flows判定**:表3.3中也需增加进入Alternative Flow...

    Lucene初级教程

    2. **过滤停用词**:可选操作,用于去除一些常见的词汇如英语中的“of”、“the”或中文中的“的”、“地”。这些词汇在文本中非常常见,但对于搜索来说意义不大,过滤掉这些词汇可以提高搜索效率。 3. **构建文档...

    lucene 初级教程

    - 去除停用词:停用词是指那些在文本中非常常见但对信息检索帮助不大的词汇,如英语中的“the”、“and”等,中文中的“的”、“是”等。去除停用词有助于减小索引的大小并提高搜索效率。 - 将处理后的信息封装到`...

    PHP 金额数字转换成英文

    - 首先定义了一个全局数组 `$numTable` 来存储数字及其对应的英文单词。 - 定义了 `$commaTable` 用于存放千位、百万位等分隔符的英文表达。 - 定义了 `$moneyType` 用于指定货币单位的英文单词。 - 调用 `...

Global site tag (gtag.js) - Google Analytics