我正在解决下面所述的问题。问题链接是https://www.codechef.com/problems/CHEFSTLT
厨师发现了两张很旧的纸,每一张原本都有一串小写的拉丁字母。两张纸上的字符串长度相等。然而,由于纸张很旧,一些字母已变得不可读。厨师想估计一下这些字符串之间的差别。让我们假设第一个字符串名为S1,第二个字符串名为S2。不可读符号是用问号符号'?‘指定的。字符串之间的差异等于位置i的数目,因此S1i不等于S2i,其中S1i和S2i分别表示I处的符号S1和S2中的位置。厨师想知道两个字符串之间的最小和最大的区别,如果他将所有不可读的符号更改为小写拉丁字母。现在您已经完全了解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()而不是get()接受输入。我的问题是为什么会这样。
发布于 2018-08-13 05:05:08
https://stackoverflow.com/questions/51823028
复制相似问题