| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1213 人关注过本帖
标题:又是wrong answer!!!!受不了
只看楼主 加入收藏
tianqiao
Rank: 2
等 级:论坛游民
帖 子:80
专家分:55
注 册:2011-9-21
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:18 
又是wrong answer!!!!受不了
先上题目:
Problem B: 病毒扫描器
Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 156  Solved: 45
[Submit][Status][Web Board]
Description

なに?!新买的 U盘这么快就中病毒了!

如下图所示,目录下多出很多同名的可执行文件:比如 1.gif 与 1.gif.exe 对应,main.c 于 main.c.exe 对应。它们都是病毒。但并不是所有可执行文件(扩展名为 .exe 的文件)都是病毒,比如图中的 problem.exe,并没不存在一个文件名字叫 problem,所以它不是病毒。

我会给你一些文件名列表,你能开发一款“病毒扫描器”帮我识别出哪些是病毒文件吗?识别方法是:

    文件名以“.exe”结尾。
    在文件名列表中同时还存在去掉“.exe”后同名的文件。

Input

    输入数据有多组。
    每组输入的第一行是一个整数 n(0 < n <= 1000),表示接下来会有 n 个文件名。
    接下来的 n 行为文件名,每个文件名占一行。
    文件名最多 16 个字符,并且中间不包含空格。
    如果 n 等于 0,则程序结束。

Output

    以字典顺序输出每一组数据中的病毒文件名。
    每个文件名输出一行。

Sample Input
2 a.txt a.txt.exe 2 a a.txt 10 a.txt b.txt d.txt.exe c.txt d.txt a.txt.exe e.txt f.txt e.txt.exe g.txt 0
Sample Output
a.txt.exe a.txt.exe d.txt.exe e.txt.exe
HINT


    例子中第二组没有病毒文件。

    找出病毒文件后,输出前不要忘了排序。

搜索更多相关主题的帖子: 病毒 扫描器 problem 执行文件 Memory 
2011-12-22 12:54
tianqiao
Rank: 2
等 级:论坛游民
帖 子:80
专家分:55
注 册:2011-9-21
收藏
得分:0 
在上代码
2011-12-22 12:54
tianqiao
Rank: 2
等 级:论坛游民
帖 子:80
专家分:55
注 册:2011-9-21
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
int main()
{
    int sum,num,i,j,flag=0,mark=0;
    char ss[1001][17],s1[1001][17],s2[1001][17],s3[1001][17],tmp[17];
    while(scanf("%d",&sum)&&sum){
        if(sum==0)break;                                  //输入0结束
        scanf("\n");
        for(i=0;i<sum;i++)
            gets(ss[i]);                                 //输入n个字符串
        for(i=0;i<sum;i++)
            for(j=0;;j++){
                if(ss[i][j]=='\0')break;
                if(ss[i][j]=='.'&&ss[i][j+1]=='e')
                {
                    strcpy(s1[flag],ss[i]);
                    flag++;
                    break;
                }
            }                                           //把所有后缀为.exe的字符存起来
        for(i=0;i<flag;i++)
            for(j=0;;j++){
                s2[i][j]=s1[i][j];
                if(s1[i][j+1]=='.'&&s1[i][j+2]=='e'){
                s2[i][j+1]='\0';
                break;
                }
            }                                          //把字符串后面的.exe四个字符割掉
            for(i=0;i<flag;i++)
                for(j=0;j<sum;j++){
                    if(strcmp(s2[i],ss[j])==0)
                    {   strcpy(s3[mark],s1[i]);
                        mark+=1;
                        break;
                    }
                }                                      //如果有匹配的字符就将原本没有割掉的字符存到新的数组之中
                for(i=0;i<mark-1;i++)
                    for(j=0;j<mark-1-i;j++)
                    {
                        if(strcmp(s3[j],s3[j+1])>0)
                        {
                            strcpy(tmp,s3[j]);
                            strcpy(s3[j],s3[j+1]);
                            strcpy(s3[j+1],tmp);
                        }
                    }                                 //字符串排序
                    for(i=0;i<mark;i++)
                        puts(s3[i]);
                        flag=0;mark=0;
    }
    return 0;
}
2011-12-22 12:54
tianqiao
Rank: 2
等 级:论坛游民
帖 子:80
专家分:55
注 册:2011-9-21
收藏
得分:0 
为什么交上去wrong answer!!!实在不懂
2011-12-22 12:55
暗之星辉
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-12-7
收藏
得分:0 
找出病毒文件后,输出前不要忘了排序。
2011-12-22 13:52
tianqiao
Rank: 2
等 级:论坛游民
帖 子:80
专家分:55
注 册:2011-9-21
收藏
得分:0 
回复 5楼 暗之星辉
我排序了啊.
2011-12-22 13:54
kuangfengjiw
Rank: 2
等 级:论坛游民
帖 子:20
专家分:77
注 册:2011-12-16
收藏
得分:0 
if(ss[i][j]=='.'&&ss[i][j+1]=='e')这个判断条件只是判断.e啊,又不是判断.exe
2011-12-22 17:25
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
别问为什么,告诉我下面代码的提交结果。
程序代码:
#include<stdio.h>
#include<string.h>
int cmp(const void *a, const void *b)
{
    return strcmp(*(char **)a, *(char **)b);
}
int main()
{
    char str[1000][32];
    char *list[1000];
    int n, i, len;
    while(scanf("%d", &n), n)
    {
        for(i = 0; i < n; i++)
        {
            scanf("%s", str[i]);
            len = strlen(str[i]) - 4;
            if(len > 0 && !strcmp(str[i] + len, ".exe")) str[i][len] = '\0';
            list[i] = str[i];
        }
        qsort(list, n, sizeof(char *), cmp);
        for(i = 1; i < n; i++)
            if(!strcmp(list[i], list[i - 1])) printf("%s.exe\n", list[i]);
    }
    return 0;
}

重剑无锋,大巧不工
2011-12-22 20:00
tianqiao
Rank: 2
等 级:论坛游民
帖 子:80
专家分:55
注 册:2011-9-21
收藏
得分:0 
回复 8楼 beyondyf
还是WA
2011-12-22 22:04
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
哪儿的题,把地址留下来,我亲自去看看。

重剑无锋,大巧不工
2011-12-22 22:08
快速回复:又是wrong answer!!!!受不了
数据加载中...
 
   



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

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