题目描述

我们知道一个电话号码A是另一个电话号码B的前缀,B是不能被拨打的。

举个例子,A是123,B是12345。当按下123后我们是给A打电话而不是给B。

给出N个电话号码,你的任务是找出是否存在两个号码A和B,满足A是B的前缀。

输入

输入由几组数据组成。

每一组的第一行有一个整数N (0<N<1001),表示电话号码的数量。

接下来的N行,每行是一个电话号码。

测试数据以一个0结束。

输出

对于每组测试数据,如果存在一个电话号码不能被拨打,输出“NO”,否则输出“YES”。

样例输入

2
012
012345
2
12
012345
0

样例输出

NO
YES

提示

来源

11级侯少琼

解题思路:根据题意: 一个电话号码 A是另一个电话号码B的前缀,B是不能被拨打的。因此只要找到了号码A是号码B的前缀,那么号码B(可能不止一个号码),就是不能拨打的。
所以在输入的号码中,如果找出号码A是号码B(这里的B可能包含多个号码)的前缀,那么先打印No,然后立即跳出循环判断。

如果穷举尽了所有的可能,还是没有找到有号码A是号码B的前缀的一种可能,那么则打印Yes

代码示例:

#include<stdio.h>
#include<string.h>
struct number//结构体变量用于储存每一个电话号码
{
    char c[100];
};
int main()
{
    int n,i,j,k,flag1,flag2,len1,len2,len;
    //struct number num[10000];//如果使用的不是Minimalist GNUfor Windows编译器,请使用这种方式定义结构体数组变量
    while(scanf("%d",&n)&&n)
    {
        struct number num[n];//动态定义结构体数组变量的大小(这在Minimalist GNUfor Windows编译器上可以正常运行,已测试多次)
        for(i=0;i<n;i++)
        {
            scanf("%s",num[i].c);//接受输入的号码
        }
        for(i=0;i<n;i++)
        {
            flag2=0;
            len1=strlen(num[i].c);
            for(j=i+1;j<n;j++)
            {
                len2=strlen(num[j].c);
                len=len1<len2?len1:len2;
                flag1=0;//用于标记号码A和号码B在取号码A和B最小长度的情况下,有几个字符是相同的
                for(k=0;k<len;k++)
                {
                    if(num[i].c[k]==num[j].c[k])
                    {
                        flag1++;
                    }
                    else
                    {
                        break;
                    }
                }
                if(flag1==len)
                {
                    flag2++;//用于标注是否找到了号码A是号码B的前缀
                    break;
                }
            }
            if(flag2)
            {
                printf("NO\n");//一定要注意这里,所有字母全部大写,我就在这里被坑了四次
                break;
            }
        }
        if(!flag2)//在穷举了所有可能之后,如果还没找到有号码A是号码B的前缀的可能存在,则输出Yes
        {
            printf("YES\n");//一定要注意这里,所有字母全部大写,我就在这里被坑了四次
        }
    }
}

1127: 电话号码相关推荐

  1. 电话号码正则表达式键盘弹起验证

    <!--电话号码正则表达式键盘弹起验证--> <input class="telphone-number" onkeyup="(this.v=funct ...

  2. java电话号码开头_JS使用正则验证手机号包含400和800开头号码

    正则表达式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符 ...

  3. php正则邮箱验证,php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)...

    本文实例需要验证的内容:邮件地址.Url地址.电话号码.邮政编码,验证方法分享给大家供大家参考,具体内容如下 1.电子邮件地址的校验 /* 校验邮件地址*/ function checkMail($e ...

  4. 编写程序创建一个通讯录文件,在其中存入10位同学的姓名、年龄、电话号码,并在屏幕上输出第2、4、6、8、10位同学的信息

    <程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p257 习题8 8.编写程序创建一个通讯录文件,在其中存入10位同学的姓名.年龄.电话号码,并在屏幕上 ...

  5. 防止在iOS设备中的Safari将数字识别为电话号码

    转:防止在iOS设备中的Safari将数字识别为电话号码 在测试中发现iPad上的Safari总会把长串数字识别为电话号码,文字变成蓝色,点击还会弹出菜单添加到通讯录. 别的地方倒也罢了,如果在用户名 ...

  6. java 验证手机号码、电话号码(包括最新的电信、联通和移动号码)

    目前的号码段(2017-06-01更新) java代码 package com.linbilin.test;import java.util.regex.Pattern;public class Ch ...

  7. 电话号码 【trie树】

    电话号码 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描写叙述 给你一些电话号码,请推断它们是否是一致的,即是否有某个电话是还有一个电话的前缀. 比方: Emerg ...

  8. php绑定邮箱地址链接,php完美匹配邮箱、链接地址和电话号码

    2012/01/31日 更新: 匹配手机以及电话号码 重新修改,可支持18开头的手机号,并修改bug,可匹配出字符串中所有匹配号码! 经过多次测试,以下代码可以实现邮箱.链接地址和电话号码的匹配 匹配 ...

  9. 从html中提取手机号码,C#从字符串中提取电话号码、手机号码

    C#程序目的:从一堆字符串中提取电话号码.手机号码,要求字符串中的号码以非数字字符分割.原理:利用正则表达式提取纯数字字符串数组,然后利用长度等号码特征,筛选过滤. 代码: //思路仅供参考 //nu ...

最新文章

  1. python加号换行,Python字符串拼接六种方法介绍
  2. Hadoop Pig学习笔记 各种SQL在PIG中实现
  3. Boost:GPU上的2D图像中绘制最终的随机“walk”,并使用OpenCV进行显示
  4. Tensorflow从入门到精通之:Tensorflow基本操作
  5. Swift--基本数据类型(一)
  6. “互联网+”促传统企业三大转型
  7. mongo的php查询,使用PHP进行简单查询的mongo查询速度慢
  8. 27岁博士毕业,32岁成清华博导!黄高助理教授:DenseNet发明者
  9. 好看的个人主页,个人引导页
  10. ssh整合,明明已经导入包,却总是有很多ClassNotFoundException
  11. 软考信息系统项目管理师_信息化与信息系统3_软件工程_新一代信息技术---软考高级之信息系统项目管理师005
  12. python实现新闻网站_Python 教你 4 行代码开发新闻网站通用爬虫
  13. AJAX 跨域调用和 Java 跨域 发送请求
  14. ios学习笔记——对象归档
  15. 怎么检查计算机和打印机是否连接网络,检查电脑是否正确连接网络打印机
  16. DDR3 Vivado 仿真测试成功
  17. 网页设计常用色彩搭配表
  18. 8.声卡驱动06-自己实现alsa驱动-虚拟声卡-widget
  19. 1000个苹果和10个筐子
  20. 书评--把信送给加西亚

热门文章

  1. html显示点号,类选择器以一个点号显示
  2. java切金条,分金条 - 前端工程师-Becket - BlogJava
  3. SugarCRM源码分析之ControllerFactory
  4. hqs-popup弹窗实现多选(uni-app)
  5. 专访金山办公软件CEO葛珂:看到超越微软机会
  6. 如何用vba在word中快速移动或选中内容区域?
  7. mocuz php7,安装Discuz x3.x整站程序教程
  8. SMIT快捷命令总结
  9. 笛卡尔乘积特征构造以及遗传编程特征构造
  10. C语言程序——求三角形面积