Phone Number 2010年山东省第一届ACM大学生程序设计竞赛

来源:互联网 发布:小米手机mac地址查询 编辑:程序博客网 时间:2024/05/22 03:11


Phone Number

Time Limit: 1000MS Memory limit: 65536K

题目描述

We know that if a phone number A is another phone number B’s prefix, B is not able to be called. For an example, A is 123 while B is 12345, after pressing 123, we call A, and not able to call B.
Given N phone numbers, your task is to find whether there exits two numbers A and B that A is B’s prefix.

输入

 The input consists of several test cases.
 The first line of input in each test case contains one integer N (0<N<1001), represent the number of phone numbers.
 The next line contains N integers, describing the phone numbers.
 The last case is followed by a line containing one zero.

输出

 For each test case, if there exits a phone number that cannot be called, print “NO”, otherwise print “YES” instead.

示例输入

20120123452120123450

示例输出

NOYES
#include<iostream>#include<string>using namespace std;string a[1005],k;int b[1005];int main(){int n,i,j,p,s;while(cin>>n&&n){s=0;for(i=0;i<n;i++)cin>>a[i];for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++){if(a[j]>a[j+1]){k=a[j];a[j]=a[j+1];a[j+1]=k;}}//for(i=0;i<n;i++)//cout<<a[i]<<endl;for(i=0;i<n;i++)b[i]=a[i].size();for(i=0;i<n-1;i++){p=b[i]<b[i+1]?b[i]:b[i+1];for(j=0;j<p;j++) if(a[i][j]!=a[i+1][j]) break; else if(j==p-1) s=1;}//for(i=0;i<n-1;i++)//if(a[i]==a[i+1])//s=2;if(s==1)cout<<"NO"<<endl;elseif(s==0)cout<<"YES"<<endl;}return 0;}

0 0
原创粉丝点击