链接:
http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1109
解析思路:
两两组成一个字符串再比较一下
代码:
#include<bits/stdc++.h> using namespace std; struct str { char name[10]; }s[205]; bool cmp(str a,str b) { if(a.name[0] != b.name[0]) { return a.name[0] < b.name[0]; } else { return a.name[1] < b.name[1]; } } int main() { int t; while(~scanf("%d",&t)) { if(t==0) break; getchar(); char a[205]; while(t--) { gets(a); int j = 0; int len = strlen(a); for(int i = 0; i < len-1; i++) { s[j].name[0] = a[i]; s[j].name[1] = a[i+1]; j++; } sort(s,s+j,cmp); str temp; str ans; int num = 1; int cnt = 0; temp = s[0]; for(int i = 1 ; i <= j; i++) { //printf("s[j]----------%s********\n",s[i].name); int flag = strcmp(temp.name,s[i].name); if(flag == 0) { num++; } else { if(cnt < num) { cnt = num; ans = s[i-1]; } num = 1; temp = s[i];//从下一个开始比较 } } printf("%s\n",ans.name); } puts(""); } return 0; }
本文介绍了一种通过两两组合字符串元素并进行排序比较的方法来找出重复最多的字符串对的算法实现。该算法首先将字符串拆分成多个较小的字符串单元,然后使用自定义的比较函数对这些单元进行排序。最后通过遍历排序后的列表来统计并找出出现次数最多的字符串对。
417

被折叠的 条评论
为什么被折叠?



