SDUT OJ 之 1571 《人品,有没有?》 字符串的处理问题
人品,有木有?
Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^_^
题目描述
新一届的山东理工大学ACM网络擂台赛就要开始啦!听说晋级的选手有机会参加现场赛拿奖呢!闻讯好多同学报了名。作为比赛的组织者和命题者,我们当然希望更多的同学能够加入到这样的竞赛中来,第一可以自知,第二可以知人,说白了就是知己知彼,看看你编程的水平在学校范围内算是哪个层次。
但是歪风时常有,今年特别多啊。就是有些孩子不听话,没有人品,把考试中作弊的歪风带到了比赛中来,影响了比赛的公平性。只想问一句:人品,有木有?
但我们也不是 傻子,大家应该知道管理员可以随时查阅参赛同学的代码的,另外我们也会百度。所以,有情况的同学们,我们知道,你们懂得。人品有问题的人是没有机会入选集 训队的,也是没有能力夺得冠军的。只希望大家能够正视这种不正之风,无论学什么都要用一颗诚挚的心去面对,严谨而不浮躁,不然大学上也白上,徒增了一些年 龄而已。
回归正题,我们是通过一个专门判断程序,来检测某些人的代码是否是相似甚至相同的,以及是否是跟网上的代码一样的。今天交给同学们的任务简单一些,只需要判断两段代码是否相同(相同的意思就是完全一样)就OK了,注意注释和空行不算在内。
输入
输入仅包含一组数据。两端代码,每段代码有多行,代码中可能有空格换行,每行代码长度不超过100个字符,每段代码不超过100行。两段代码用@@@@@@分割,数据保证代码中其他地方不会出现用来分隔的串@@@@@@,保证注释都是以//开始的独占一行的。
输出
只有一行。如果两段代码相同则输出Yes,否则输出No。
示例输入
//张三的代码 #include<stdio.h> int main() { printf(“I’m Zhansan!\n”); return 0; } @@@@@@ //李四的代码 #include<stdio.h> int main() { //不得不说李四同学,貌似没有改动什么。 printf(“I’m Zhansan!\n”); 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, '\0', sizeof(t)); memset(dd, '\0', 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\n"; } else { cout<<"No\n"; } return 0; }