Study__Life 2020-12-09 23:49 采纳率: 100%
浏览 50
已采纳

C语言萌新,遇到瓶颈了,有些题感觉做对了,但在OJ系统上提交通过不了,真心请求大佬帮忙

比如这里的这道Anagrams问题,两个单词若字母出现次数相等,则输出Y,否则输出N显示运行错误,刚学了数组的知识,我也在网上收了一下这题的程序,但都涉及到我还没学到知识,按道理来讲,这题只用数组的知识也能解出来的

#include <stdio.h>
int main()
{
    int i, j, c, temp1, temp2, min1, min2, d;
	char a[80], b[80];
	i = 0;
	while((a[i] = getchar()) != '\n') i++;
	a[i] = '\0';
	c = i;
	j = 0;
	while((b[j] = getchar()) != '\n') j++;
	b[j] = '\0';
	d = j;
	if(c != d)
	   printf("N");
	else 
	{
	 for(i = 0; i < c; i++)
	 {
	     if(a[i] >= 65 && a[i] <= 90) a[i] += 32;
		 if(b[i] >= 65 && b[i] <= 90) b[i] += 32;
	 }
	 for(i = 0; i < c - 1; i++)
	 {
	     min1 = i;
		 min2 = i;
		 for(j = i + 1; j < c; j++)
		 {
		     if(a[min1] > a[j]) min1 = j;
			 if(b[min2] > b[j]) min2 = j;
		 }
		 temp1 = a[i];
		 a[i] = a[min1];
		 a[min1] = temp1;
		 temp2 = b[i];
		 b[i] = b[min2];
		 b[min2] = temp2;
	 }
	 for(i = 0; i < c; i++)
	     if(a[i] != b[i]) break;
	 if(i == c) printf("Y");
	 else printf("N");
	}
	return 0;
}
  • 写回答

3条回答 默认 最新

  • qq_25376897 2020-12-10 11:02
    关注
    #include <stdio.h>
    int main()
    {
        int i, j, c, d;
    	char a[80], b[80];
    	int e[26]={0},f[26]={0};//表示26个字母出现的次数
    	i = 0;
    	while((a[i] = getchar()) != '\n') i++;
    	a[i] = '\0';
    	c = i;
    	j = 0;
    	while((b[j] = getchar()) != '\n') j++;
    	b[j] = '\0';
    	d = j;
    	if(c != d)
    	   printf("N");
    	else 
    	{
    	 for(i = 0; i < c; i++)
    	 {
    	     if(a[i] >= 'A' && a[i] <= 'Z')
    	     {
    	         e[a[i]-'A']++;//a[i]-'A',ASCII码相减得出下标,该数字代表的字母次数+1
    	     }
    	     if(a[i] >= 'a' && a[i] <= 'z')
    	     {
    	         e[a[i]-'a']++;
    	     }
    		 if(b[i] >= 'A' && b[i] <= 'Z')
    	     {
    	         f[b[i]-'A']++;
    	     }
    	     if(b[i] >= 'a' && b[i] <= 'z')
    	     {
    	         f[b[i]-'a']++;
    	     }
    	 }
    	 for(j=0;j<26;j++){
    	     if(e[j]!=f[j]){//对应字母的出现次数不相等,输出N,否则输出Y
    	         printf("N");
    	         return 0;
    	     }
    	 }
    	 printf("Y");
    	}
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么