其实题目已经给的很清楚了,枚举所有的情况,统计出现次数,找到符合条件的结果。

那么我们就根据这个提示完成即可:

第一步:枚举所有可能的字串:

 1 #include<iostream>
 2 #include<string.h>
 3 using namespace std;
 4 int main()
 5 {
 6     int n;
 7     char s[61];            //存放原来的字符串
 8     char a[61][61];        //存放所有可能的字串
 9     int i=0,j=0,r=0;
10
11     cin>>n;
12     cin>>s;//输入原来的字符串
13
14     while(1)
15     {
16         while(j<n)    //n个一赋值
17         {
18             a[i][j] = s[r];
19             j++;
20             r++;
21         }
22         a[i][j] = '\0';//问题所在处
23         if(i==strlen(s)-n && j==n)        break;//当记录到最后一个字符的时候,说明记录已完毕
24         j = 0;
25         r = r - n + 1;
26         i++;
27     } 

这里面最初我是出现了一点小问题的:也就是上面代码中我注释的那个“问题所在处”。没有给每个字符串后面加‘\0’,这就相当于没有终止该字符串。当时调试程序的时候是有问题的。给大家看一个例子:

我当时设置了两个地方的输出,然后程序给我的回应就是上面的东西,表示很郁闷啊。还好发现了错误并且进行了改正。

代码不需要额外解释,注释还是比较详细的。

第二步:统计出现次数

 1 /*统计个数*/
 2     int num[61] = {0};
 3     char temp = '0';
 4     for(j = 0; j <= i; j++)
 5     {
 6         for(r = j+1; r <= i; r++)
 7         {
 8             if(strcmp(a[j],a[r])==0)
 9             {
10                 num[j]++;
11                 a[r][0] = temp;//给首位赋一个数字,使其绝对不会成为最大次数的竞争对手
12                 temp = temp+1;
13             }
14         }
15     }

  我的想法是:之前已经枚举了所有的情况,那就统计一下对应的出现次数,一遍一遍的刷,但是在刷的过程中,要注意的是,需要将重复的字串计数之后进行一下处理,我的做法是,将字串的首位变成数字,这样就可以保证至少自己人不会和自己人杠上,也就是说同一个字串不会抢夺第一的位置。

  这里面需要说明的是代码第11和12行:起初设置的时候,我将首位直接设置成了‘0’,但是发现可能会出现首字母为‘0’的字符串才是最多的,因为很多字串可能就是首字母不同,如果我全部设置成‘0’,那就给了他们相同的机会,所以我做了改动,让临时变量temp随着统计发生变化,本来想用随机数什么的,但是这里因为是字符的处理,随机数可能还是有些麻烦的。

第三步:找到最终结果:

  我们需要的是出现次数最多的字串,如果有相同次数的,选择最长的字串,如果还是很多个,选择最早的那个,这个还是比较好控制的。

 1 /*进行数字的比较,确定出现次数最多的那个*/
 2     int max = 0;//记录下标的变量
 3     for(r = 1; r <= i; r++)
 4     {
 5         if(num[max]<num[r])
 6         {
 7             max = r;
 8         }
 9         else if(num[max]==num[r])//出现次数一样多 ,找最长的那个
10         {
11             if(strlen(a[max]) < strlen(a[r]))
12             {
13                 max = r;
14             }
15         }
16      }
17      //此时max就是我们寻找的那个下标
18      cout<<a[max]; 

不到之处还希望大家批评指正,在此谢过!20:06:39   2017-08-13

蓝桥杯_算法训练_字串统计相关推荐

  1. 蓝桥杯 ADV-150算法提高 周期字串

    问题描述 右右喜欢听故事,但是右右的妈妈总是讲一些"从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山--"这样循环的故事来搪塞右右. 我们定义,如果一个 ...

  2. 蓝桥杯:算法训练 印章 Python

    问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案,保留4位小数. 样例输入 2 3 样例 ...

  3. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  4. 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善

    题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...

  5. 蓝桥杯 试题 算法训练 筛选号码 Java

    蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...

  6. 算法刷题系列(四)蓝桥杯python算法训练3(下)

    上一次的节点选择算法由于春节过年耽搁了,现在重新补上 上篇链接:算法刷题系列(四)蓝桥杯python算法训练3 - 经验教训 在纷繁复杂的使用了列表来暂存数据之后,发现其实可以利用笔者自己不太常用的字 ...

  7. 蓝桥杯 试题 算法训练 无聊的逗

    蓝桥杯 试题 算法训练 无聊的逗 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘 ...

  8. 蓝桥杯试题 算法训练 绘制地图

    蓝桥杯试题 算法训练 绘制地图 问题描述 最近,WYF正准备参观他的点卡工厂.WYF集团的经理氰垃圾需要帮助WYF设计参"观"路线.现在,氰垃圾知道一下几件事情: 1.WYF的点卡 ...

  9. 蓝桥杯 试题 算法训练 娜神平衡 C++ 详解

    问题描述: 娜娜是一个特别可爱的女孩子,作为学神的她最近在情感方面出现了一点点小问题. 她暗恋的琦琦是一名学霸,他只喜欢长得漂亮和学习很好的女生. 娜娜学习确实很神,但是她在琦琦面前却总是表现不出平时 ...

最新文章

  1. dev c++ 最新版本5.0
  2. MongoDB中的读写锁
  3. 解决plt.savefig存的图是空白的
  4. 【C语言】数字在排序数组中出现的次数(改动)
  5. 前端接收pdf文件_雷达接收机的噪声系统及灵敏度
  6. 文本的数据导入到数据库中 mysql
  7. Linux下修改当前用户的最大线程数和 open files
  8. mysql global locks_mysql8 参考手册--NDB群集线程状态
  9. 人脸识别mtcnn原理
  10. Windows目录下SysWow64文件夹与System32文件夹
  11. 计算机一级考试wps教程视频教程,全国计算机等级考试一级WPS Office教程(2008年版)...
  12. Java通过图片URL把图片上传到本地服务器
  13. 外包!音频类小程序开发
  14. 微积分Z2J5 两个重要极限
  15. linux 嗅探器源码,一个简易网络嗅探器的实现
  16. UI设计必掌握的软件之一:Axure!
  17. glib实现Socket通信
  18. 网易云音乐歌单可视化,有多少是你收藏过的呢
  19. echarts饼状图中间显示数值加上名字
  20. JAVA编写元音字母(Switch语句)

热门文章

  1. 打造智慧城市 让市场成为主角
  2. EntityFramework Core数据查询
  3. 基于ArcGIS API for JavaScript加载天地图
  4. javascript创建类方法汇总(包含es6语法)
  5. 面试官:给我说一下 Spring MVC 拦截器的原理?
  6. 阿里开源那个牛哄哄问题排查工具竟然不会用?最佳实践来了!
  7. 公司的API接口被刷了,那是因为你没这样做!
  8. 程序员,Mybatis 你踩过坑吗?
  9. 一次 Java 内存泄漏排查过程,学习学习
  10. redis:list的底层实现--压缩列表