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 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)