#include
#define int long long
signed main(){
char w[5005];
int n,k[5005];
int max=0,ans=0;
scanf("%lld",&n);
for(int i=0;i
scanf("%c %lld\n",&w[i],&k[i]);
}
for(int i=0;i
if(k[i]>=max)max=k[i];
}
for(int i=0;i
if((int)w[i]==97&&k[i]==max)ans++;
}
printf("%lld",max);
if(ans==1)printf("Yes");
else printf("No");
}
scanf("%c %lld\n",&w[i],&k[i]);后面加个getchar();
这就说明算法思路没有问题,数据读取方面出现问题,如果输入时为字符串且含空格,就需要像楼上所说的那样,使用getchar()方法删除空格,因为空格也是一个字符。
因为5后面有个空格,会被%c读取,scanf("%lld",&n);改成scanf("%lld",&n);getchar();
修改如下,供参考:
#include <stdio.h>
#define int long long
signed main() {
char w[5005];
int n, k[5005];
int max = 0, ans = 0;
scanf("%lld", &n);
for (int i = 0; i < n; i++) {
scanf(" %c %lld", &w[i], &k[i]);
//scanf("%c %lld\n",&w[i],&k[i]);
}
for (int i = 0; i < n; i++) {
if (k[i] >= max)max = k[i];
}
for (int i = 0; i < n; i++) {
if ((int)w[i] == 97 && k[i] == max)ans++;
}
printf("%lld", max);
if (ans == 1)printf("Yes");
else printf("No");
}