1164: 在线判题(字符串)
来源:互联网 发布:淘宝上怎么兼职赚钱 编辑:程序博客网 时间:2024/05/12 20:53
Description
LittleTom开发了一个在线判题系统,判题系统需要把用户提交上来的代码编译成可执行文件,然后运行。而用户会提交什么样的代码是无法预知的,所以LittleTom做了充分的准备,比如阻止解题程序访问文件系统、阻止解题程序访问注册表、阻止解题程序修改系统设置、阻止解题程序关闭系统、阻止解题程序超限或非法使用内存、阻止解题程序的运行时间超过设定时间等。这些工作LitteTom都已完成。
还有一个待解决的问题是判断解题程序的正确性。判题系统需要把解题程序产生的输出文件和正确的输出文件进行比较,如果两个文件完全相同,则判题系统返回“Accepted”,否则,如果两个文件除了空白符(空格' ', 制表符'\t', 或 回车符'\n')之外其余内容都相同,则判题系统返回“Presentation Error”,否则判题系统返回“Wrong Answer”。
给定两个文件,一个代表正确输出,一个代表用户的解题程序的输出,你的任务是计算判题系统应该返回什么信息。
Input
输入包含多组测试实例。第一行输入一个整数T表示测试实例的个数。然后是T组输入。每组输入有两部分:一个代表正确输出,一个代表用户的解题程序的输出。都以“START”开始,以“END”结束,在“START”和“END”之间的是需要判断的数据部分。
Output
对于每一个测试实例,有一行输出,输出判题系统应该返回的结果:Accepted、Presentation Error或Wrong Answer。
Sample Input
4START1 + 2 = 3ENDSTART1+2=3ENDSTART1 + 2 = 3ENDSTART1 + 2 = 3ENDSTART1 + 2 = 3ENDSTART1 + 2 = 4ENDSTART1 + 2 = 3ENDSTART1 + 2 = 3END
Sample Output
Presentation ErrorAcceptedWrong AnswerPresentation Error
HINT \
//'\t'制表符#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 1005int Compare(char *a,char *b);void Input(char *str);void Del(char *str);int main (){ int T; int m = 0; char *a,*b; scanf("%d",&T); while ( T-- ) { a = (char *)malloc(N*sizeof(char)); b = (char *)malloc(N*sizeof(char)); //将a中后的N个字节用0替换并返回a,清0操作memset(a,0,N*sizeof(char));memset(b,0,N*sizeof(char));Input(a);Input(b);m = Compare(a,b);if ( m == 1 )printf("Accepted\n");else if ( m == 2 )printf("Presentation Error\n");elseprintf("Wrong Answer\n");//该函数是将malloc分配的内存空间释放free(a);free(b); }return 0;}/*int strcmp(char *str1,char *str2);比较两个字符串str1,str2,若str1<str2,返回负数,相等返回0,大于返回正数*/int Compare(char *a,char *b){ if ( strcmp(a,b)==0 ) return 1; Del(a);Del(b); if ( strcmp(a,b)==0 ) return 2; return 3;}void Input(char *str){ char *str1; str1 = (char *) malloc (N*sizeof(char)); memset(str1,0,N); while ( gets(str1) ,strcmp(str1,"START") ); while ( gets(str1) ,strcmp(str1,"END") ) {/* char *strcat(char *str1,char *str2);把字符串str2接到str1后面str1最后面的'\0'被取消。 */ if ( *str1 == 0 ) strcat(str,"\n"); else strcat(str,str1); }}void Del(char *str){ char *s; s = (char *)malloc( N*sizeof( char ) ); memset(s,0,N); int i=0,j=0; for ( i=0 ; *(str+i)!='\0' ; i++ ) { if ( *(str+i)!=' ' && *(str+i)!='\t' && *(str+i)!='\n' ) { *( s + j )=*( str + i ); j++; } } *( s + j ) = '\n' ;//int strcpy(char *str1,char *str2);把str2指向的字符复制到str1中去,返回str1 strcpy(str,s);}
#include<stdio.h>#include<string.h>#define N 200001void Del(char ch[]);int Compare(char a[],char b[]);void Input(char ch[]);int main (){ int T; char a[N],b[N]; int m; scanf("%d",&T); while ( T-- ) { memset(a,0,sizeof(a));memset(b,0,sizeof(b));Input(a);Input(b);m = Compare(a,b);if ( m == 1 )printf("Accepted\n"); else if ( m == 2 ) printf("Presentation Error\n");elseprintf("Wrong Answer\n"); }return 0;}int Compare(char a[],char b[]){ if( strcmp(a,b) == 0 ) return 1; Del(a); Del(b); if( strcmp(a,b) == 0 ) return 2; return 3;} void Del(char ch[]){ int i,j; j=0; char s[N]={0}; for ( i=0 ; ch[i]!='\0' ; i++ ) { if ( ch[i] !=' ' && ch[i] != '\n' && ch[i] != '\t' )s[j++]=ch[i]; } s[j+1]='\n'; strcpy(ch,s);}void Input(char ch[]){char str[N]={0};while(gets(str),strcmp(str,"START"));while(gets(str),strcmp(str,"END")){ if ( str[0]==0 )strcat(ch,"\n");elsestrcat(ch,str);}}
阅读全文
0 0
- 1164: 在线判题(字符串)
- 1164: 在线判题(字符串)
- 在线判题(字符串)
- 在线判题系统
- 字符串判等(奇葩水题)
- OJ在线判题注意事项(C++版)
- 在线判题系统hustoj的搭建
- 基于java的ACM online judge(OJ)在线判题系统实现
- C# 字符串比较(判等)优化
- HDU 2072 字符串处理(判重)
- 字符串的判空
- Java字符串判空
- 字符串判空
- 字符串判等
- 字符串判等
- 字符串判等
- 字符串 判空
- 汇编-字符串判回文
- vs2013+opencv3.2配置于仕琪人脸检测算法
- C++——USACO Section 2.4 题解
- HDOJ1086 线段相交问题
- faster rcnn相关整理
- Redis集群搭建与简单使用
- 1164: 在线判题(字符串)
- Spark读取本地文件操作
- ubuntu将左侧图标放至底部
- 类与对象
- 微型四轴飞行器(4)通讯设计
- UVALive 4769 Fuzzy Google Suggest Trie树
- 数据仓库与数据集合的概念与区别?
- Android阅读器——FolioReader
- 知识点集