NYOJ 241 字母统计(好心酸的水题)
2015-01-31 03:04
155 查看
字母统计
时间限制:3000 ms | 内存限制:65535 KB难度:1
描述现在给你一个由小写字母组成字符串,要你找出字符串中出现次数最多的字母,如果出现次数最多字母有多个那么输出最小的那个。
输入
第一行输入一个正整数T(0<T<25)
随后T行输入一个字符串s,s长度小于1010。
输出
每组数据输出占一行,输出出现次数最多的字符;
样例输入
3 abcd bbaa jsdhfjkshdfjksahdfjkhsajkf
样例输出
a a j
调试了十几遍,弄了一个多小时,才AC,难度为1,的题,我也是给跪了,解题比较愚蠢还用了结构体
代码如下:
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> using namespace std; struct word { char c; int n; }num[1100]; int cmp(word a,word b) { return a.n>b.n; } int main() { int t,i,j,len,sign[1100]; char str[1100]; scanf("%d",&t); while(t--) { memset(sign,0,sizeof(sign)); scanf("%s",str); len=strlen(str); int k=0; for(i=0;i<len;i++) { num[k].c=str[i]; num[k].n=1; for(j=i+1;j<len;j++) { if(sign[i]==1) break; if(sign[i]==0) { if(str[i]==str[j]) { num[k].n++; sign[j]=1; } } } k++; } sort(num,num+k,cmp); if(num[0].n!=num[1].n) printf("%c\n",num[0].c); else { char s=num[0].c; for(i=1;num[i].n==num[0].n;i++) { if(num[i].c<s) s=num[i].c; } printf("%c\n",s); } } return 0; }
看了最优程序,简洁,思路清晰,今天我终于知道什么叫智商压制了
#include<stdio.h> #include<string.h> main() { int x,i,max,q; char a[1011]; scanf("%d",&x); getchar(); while(x--) { int s[26]={0}; gets(a); for(i=strlen(a)-1;i>=0;i--) s[a[i]-97]++; max=0; for(i=0;i<26;i++) if(max<s[i]) max=s[i],q=i; printf("%c\n",q+97); } return 0; }
相关文章推荐
- NYOJ241字母统计864177
- nyoj 241 字母统计
- nyoj题目241:字母统计
- NYoj 241字母统计
- NYOJ--241--字母统计
- NYOJ-241-字母统计-2013年7月26日20:29:37
- NYOJ241 - 字母统计
- NYOJ 241 字母统计
- NYOJ 241题 字母统计
- NYOJ 241 字母统计
- nyoj 241 字母统计
- NYOJ 241 字母统计
- NYOJ241字母统计
- NYOJ241字母统计
- 字母统计(南阳oj241)(水题)
- NYOJ-241 字母统计
- NYOJ-241 字母统计
- NYOJ 241 字母统计
- nyoj-241-字母统计
- NYOJ_241字母统计