题意很简单,本身也是个水题。
给你两个字符串,如果两个串完全相同,那么输出yes;如果两串只是空格的不同,出去空格后完全相同,那么输出Output Format Error,否则输出Wrong Answer。
很简单,在两个数组上面各设置一个指针逐个比对向后移动,同时设置两个flag分别标记有无不相同的字符或者空格就ok了。
#include <iostream> #include <cstdio> #include <cstring> #define maxn 1000100 using namespace std; char s1[maxn],s2[maxn]; int n,m,t,x1,x2,T; bool flag1,flag2; void compare() { x1=x2=0; if (strlen(s1)!=strlen(s2)) flag2=false; while (s1[x1] && s2[x2]) { if (s1[x1]==s2[x2]) x1++,x2++; else { if (s1[x1]==' ') x1++; else if (s2[x2]==' ') x2++; else { flag1=false; return; } } } if (!s1[x1] && !s2[x2]) return; if (s1[x1]) { for (int i=x1; s1[i]; i++) if (s1[i]!=' ') { flag1=false; return; } } for (int i=x2; s2[i]; i++) if (s2[i]!=' ') { flag1=false; return; } } int main() { scanf("%d",&T);gets(s1); for (int i=1; i<=T; i++) { flag2=flag1=true; gets(s1);gets(s2); compare(); printf("Case %d: ",i); if (!flag1) puts("Wrong Answer"); else if (!flag2) puts("Output Format Error"); else puts("Yes"); } return 0; }