当前位置: 代码迷 >> 综合 >> Hust oj 1109 店长终极推荐(字符串)
  详细解决方案

Hust oj 1109 店长终极推荐(字符串)

热度:3   发布时间:2023-12-22 04:49:18.0
店长终极推荐
Time Limit: 2000 MS Memory Limit: 65536 K
Total Submit: 491(135 users) Total Accepted: 167(123 users) Rating: Special Judge: No
Description

玩腻了两个工具之后,店长决定要好好学习.玩工具伤身体啊!!店长决定教大家学习阅读,店长总能总学习中找到乐趣,无聊的他找了一篇文章,由各种字符组成,他想统计下这篇阅读中,出现最多次数的相邻两个字符组合是什么?

Input

第一行输入一个整数T表示测试数据组数

接下来输入一行,包括一篇文章,文章由最多不超过200个字符(由任意ascii字符组成)

当T=0时结束

Output

统计文章中出现频度最高的两个连续字符,并且输入然后换行.

如果最高的有多组,按照字典顺序排序后输出第一个.

每T组测试数据后,需要输出一个换行

Sample Input

1
%#@!%#
2
This is a test!
Dianzhang JiaoZhu and Jiashou

Sample Output

%#
 
is
an

Hint

店长自此开始学习复习考研了,一个神秘人物出现了,传说中的叫兽??敬请期待

Author

void

用二维数组存一下ascii值就好辣,只要相同就加1,之后在从头到尾扫一边看谁最大就输出

#include<stdio.h>
#include<string.h>
char str[210];
int a[260][260];int main()
{int t;while (~scanf("%d", &t)){getchar();while (t--){memset(a, 0, sizeof(a));gets(str);int len = strlen(str);for (int i=0; i<len-1; ++i){a[int(str[i])][int(str[i+1])]++;}int max = -1;int ii, jj;for (int i=0; i<260; i++){for (int j=0; j<260; ++j){if (max < a[i][j]){max = a[i][j];ii = i;jj = j;}}}printf("%c%c\n", ii, jj);if (t == 0)printf("\n");}}return 0;
}CopyBackShare