标题:求解一个ACM基础题
只看楼主
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
结帖率:0
已结贴  问题点数:20 回复次数:3 
求解一个ACM基础题
因为我暂时没学算法,导致做这个题目时,程序超时,以下是题目:
Description:
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.

Input:
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.

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

Sample Input:
2
012
012345
2
12
012345
0

Sample Output:
NO
YES
搜索更多相关主题的帖子: numbers several whether 图片 
2015-10-01 17:43
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
得分:0 
这是我原版代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
    int  a,i, j, k, h = 0;
    first:while (scanf("%d", &a),a!=0)
    {
        
        char pnumber[a][20];
        for (i = 0; i < a; i++)
            gets(pnumber[i]);
        for (i = 0; i < a-1; i++)
            for (j = i + 1; j < a; j++)
            {
                k = 0;
                while (pnumber[i][k] == pnumber[j][k] && h < strlen(pnumber[i]))
                {
                    k++;
                    h++;
                }
                if (h == strlen(pnumber[i]))
                {
                    printf("NO");
                    goto first;
                }
            }
        printf("YES");
    }
    return 0;
}
但是算法很烂,时间太久
2015-10-01 17:45
li362490567
Rank: 1
等 级:新手上路
帖 子:89
专家分:8
注 册:2015-7-9
得分:0 
求解
2015-10-01 18:27
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
得分:20 
char pnumber[a][20];

我不记得这样写是不是可以的了,但是编译器貌似不能编译。

建议这样用:

char *pnumber[20];

----------
楼主把提交代码的链接发一下。


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2015-10-01 19:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-457842-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.420727 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved