SDUT OJ 之 1571 《人品,有没有?》 字符串的处理问题

人品,有木有?

Time Limit: 1000ms   Memory limit: 32768K  有疑问?点这里^_^

题目描述

       新一届的山东理工大学ACM网络擂台赛就要开始啦!听说晋级的选手有机会参加现场赛拿奖呢!闻讯好多同学报了名。作为比赛的组织者和命题者,我们当然希望更多的同学能够加入到这样的竞赛中来,第一可以自知,第二可以知人,说白了就是知己知彼,看看你编程的水平在学校范围内算是哪个层次。

       但是歪风时常有,今年特别多啊。就是有些孩子不听话,没有人品,把考试中作弊的歪风带到了比赛中来,影响了比赛的公平性。只想问一句:人品,有木有?


       但我们也不是 傻子,大家应该知道管理员可以随时查阅参赛同学的代码的,另外我们也会百度。所以,有情况的同学们,我们知道,你们懂得。人品有问题的人是没有机会入选集 训队的,也是没有能力夺得冠军的。只希望大家能够正视这种不正之风,无论学什么都要用一颗诚挚的心去面对,严谨而不浮躁,不然大学上也白上,徒增了一些年 龄而已。

       回归正题,我们是通过一个专门判断程序,来检测某些人的代码是否是相似甚至相同的,以及是否是跟网上的代码一样的。今天交给同学们的任务简单一些,只需要判断两段代码是否相同(相同的意思就是完全一样)就OK了,注意注释和空行不算在内。

输入

       输入仅包含一组数据。两端代码,每段代码有多行,代码中可能有空格换行,每行代码长度不超过100个字符,每段代码不超过100行。两段代码用@@@@@@分割,数据保证代码中其他地方不会出现用来分隔的串@@@@@@,保证注释都是以//开始的独占一行的。

输出

       只有一行。如果两段代码相同则输出Yes,否则输出No。

示例输入

//张三的代码
#include<stdio.h>
int main()
{
printf(“I’m Zhansan!
”);
return 0;
}
@@@@@@
//李四的代码
#include<stdio.h>


int main()
{


//不得不说李四同学,貌似没有改动什么。
printf(“I’m Zhansan!
”);


return 0;
}

示例输出

Yes

Accepted的代码:
#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <queue>
#include <stack>
#include <math.h>
#include <algorithm>

using namespace std;

int main()
{

    char s[150], t[15000];

    char dd[15000];
    memset(t, '', sizeof(t));
    memset(dd, '', sizeof(dd));
    gets(s);
    while(strcmp (s, "@@@@@@")!=0 )
    {

        if(s[0]=='/' && s[1]=='/' )
        {
            gets(s);
        }
        else
        {
            strcat(t, s);
            gets(s);
        }
    }
    while( gets(s)!=NULL )  //最后由 Ctrl + Z键 结束输入!
    {

        if(s[0]=='/' && s[1]=='/' )
        {
            continue;
        }
        else
        {
            strcat(dd, s);
        }
    }
    if(strcmp(t, dd)==0)
    {
        cout<<"Yes
";
    }
    else
    {
        cout<<"No
";
    }
    return 0;
}

原文地址:https://www.cnblogs.com/yspworld/p/4088681.html