Uva 10252,无法弄清楚
Posted
技术标签:
【中文标题】Uva 10252,无法弄清楚【英文标题】:Uva 10252, cannot figure out 【发布时间】:2019-09-04 19:56:06 【问题描述】:我已经尝试了所有的测试用例,但在线法官仍然给我一个错误的答案
https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1193
#include<stdio.h>
#include<string.h>
int min(int a, int b)
return a>b?b:a;
int main(void)
int i,j,s1[26],s2[26];
char str1[1005],str2[1005];
while(fgets(str1,1000,stdin)&&fgets(str2,1000,stdin))
if(strlen(str1)==0&&strlen(str2)==0) break;
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
for(i=0;i<strlen(str1);i++) s1[str1[i]-'a']++;
for(i=0;i<strlen(str2);i++) s2[str2[i]-'a']++;
for(i=0;i<26;i++)
for(j=0;j<min(s1[i],s2[i]);j++)
putchar('a'+i);
printf("\n");
return 0;
【问题讨论】:
请提供更多信息,说明您正在尝试什么以及什么不起作用。 【参考方案1】:仔细阅读man fgets
:
保留换行符,如果有的话。
您的i < strlen(str*)
循环转换了一个过多的字符。从换行符中减去'a'
并没有任何好处。
【讨论】:
我用fgets是因为有一些空的情况,比如我们:str1="",str2="pretty",没有fgets如何同时得到,两个都退出是空的吗? 可以(并且正确)使用fgets
。只是不要遍历换行符(它应该是字符串的最后一个字符)。
使用 fgets while(1) fgets() fgets()) 可以得到答案,但是如何结束程序,超出程序时间限制以上是关于Uva 10252,无法弄清楚的主要内容,如果未能解决你的问题,请参考以下文章