一串字母可以拼出的最大单词长度,求帮看看这个程序哪里有问题?
题目在附件里,代码如下。
#include<stdio.h>
#include<stdlib.h>
int Length(char *exemple){
char c='1';
int N,i,j,n,length_max=0,letter[26]={0},word[26]={0};
for(i=0;i<20;i++){
if(exemple[i]!='0')
letter[exemple[i]-'a']++;
}
scanf("%d",&N);
for(i=0;i<N;i++){
n=0;
scanf("%c",&c);
while(c!='\n'){
word[c-'a']++;
n++;
scanf("%c",&c);
}
for(j=0;j<26;j++){
if(letter[j]<word[j]) break;
if(j==25){
if(length_max<n) length_max=n;
}
}
}
return length_max;
}
int main(void){
char exemple[21]={'0'};
while(scanf("%s",exemple)!=EOF){
printf("%d\n",Length(exemple));
}
return 0;
}
我的思路是把一个单词每个字母个数存到一个26个元素的整型数组里,比较每个单词里每个字母的个数是不是超过第一行给的字母串中相应字母的个数,超过了这个单词就舍去,没超过的记录下字母个数值,然后循环,找出字母个数最大值返回。
程序没法正确运行,求各位大佬帮忙看看错误在哪儿?