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 &lt; strlen(str*) 循环转换了一个过多的字符。从换行符中减去'a' 并没有任何好处。

【讨论】:

我用fgets是因为有一些空的情况,比如我们:str1="",str2="pretty",没有fgets如何同时得到,两个都退出是空的吗? 可以(并且正确)使用fgets。只是不要遍历换行符(它应该是字符串的最后一个字符)。 使用 fgets while(1) fgets() fgets()) 可以得到答案,但是如何结束程序,超出程序时间限制

以上是关于Uva 10252,无法弄清楚的主要内容,如果未能解决你的问题,请参考以下文章

无法弄清楚为啥“悬停”不起作用

似乎无法弄清楚 ExpandableListAdapter

无法弄清楚如何修复错误

无法弄清楚为啥我的注销按钮不起作用(php)[重复]

我无法弄清楚我的简单 Java 作业

无法弄清楚为啥页面在底部加载? Angular UI-Router 自动滚动问题