我正在解决以下问题。问题的链接是https://www.codechef.com/problems/CHEFSTLT
厨师发现了两张非常旧的纸,每张纸最初都包含一串小写的拉丁字母。两张纸上的琴弦长度相等。但是,由于纸张很旧,一些字母变得不可读。 主厨想估计这些字符串之间的差异。假设第一个字符串命名为S1,第二个字符串命名为S2。不可读符号用问号符号“?”指定。字符串之间的差等于位置i的数量,因此S1i不等于S2i,其中S1i和S2i分别表示i在S1和S2中的位置处的符号。 如果Chef将所有不可读的符号更改为小写拉丁字母,则想知道两个字符串之间的最小和最大差异。现在您已经完全了解Chef的编程专业知识,您可能已经猜到了他也需要您帮助解决此问题。继续,帮助他! 输入项 输入的第一行包含一个整数T,表示测试用例的数量。 T测试用例的描述如下。 测试用例的第一行包含字符串S1。 测试用例的第二行包含字符串S2。 这两个字符串都由小写的拉丁字母和问号组成,这些地方的符号不可读。 输出量 对于每个测试用例,输出两个给定的字符串之间的最小和最大差异,它们之间用一个空格隔开。
我的代码是
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
int t;
scanf("%d",&t);
while(t--){
fflush(stdin);
char a[100],b[100];
gets(a);gets(b);
int l = strlen(a);
int min=0,max=0,i=0;
while(i<l){
if(a[i]=='?' || b[i]=='?'){
max++;
}
else if(a[i]!=b[i]){
min++;
max++;
}
i++;
}
printf("%d %d\n",min,max);
}
return 0;
}
但这给了我错误的答案,直到我使用scanf()而不是gets()进行输入。我的问题是为什么会这样。