蓝桥杯_算法训练_字串统计
其实题目已经给的很清楚了,枚举所有的情况,统计出现次数,找到符合条件的结果。
那么我们就根据这个提示完成即可:
第一步:枚举所有可能的字串:
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
蓝桥杯_算法训练_字串统计相关推荐
- 蓝桥杯 ADV-150算法提高 周期字串
问题描述 右右喜欢听故事,但是右右的妈妈总是讲一些"从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲的什么呢?从前有座山--"这样循环的故事来搪塞右右. 我们定义,如果一个 ...
- 蓝桥杯:算法训练 印章 Python
问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案,保留4位小数. 样例输入 2 3 样例 ...
- 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解
题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...
- 蓝桥杯 试题 算法训练 无聊的逗 C++ 详解 - 未完善
题目: 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的 ...
- 蓝桥杯 试题 算法训练 筛选号码 Java
蓝桥杯 试题 算法训练 筛选号码Java 算法训练 筛选号码 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 有n个人围成一圈,顺序排号(编号为1到n).从第1个人开始报数(从1到3 ...
- 算法刷题系列(四)蓝桥杯python算法训练3(下)
上一次的节点选择算法由于春节过年耽搁了,现在重新补上 上篇链接:算法刷题系列(四)蓝桥杯python算法训练3 - 经验教训 在纷繁复杂的使用了列表来暂存数据之后,发现其实可以利用笔者自己不太常用的字 ...
- 蓝桥杯 试题 算法训练 无聊的逗
蓝桥杯 试题 算法训练 无聊的逗 问题描述 逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中.不过他想到了一个游戏来使他更无聊.他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘 ...
- 蓝桥杯试题 算法训练 绘制地图
蓝桥杯试题 算法训练 绘制地图 问题描述 最近,WYF正准备参观他的点卡工厂.WYF集团的经理氰垃圾需要帮助WYF设计参"观"路线.现在,氰垃圾知道一下几件事情: 1.WYF的点卡 ...
- 蓝桥杯 试题 算法训练 娜神平衡 C++ 详解
问题描述: 娜娜是一个特别可爱的女孩子,作为学神的她最近在情感方面出现了一点点小问题. 她暗恋的琦琦是一名学霸,他只喜欢长得漂亮和学习很好的女生. 娜娜学习确实很神,但是她在琦琦面前却总是表现不出平时 ...
最新文章
- dev c++ 最新版本5.0
- MongoDB中的读写锁
- 解决plt.savefig存的图是空白的
- 【C语言】数字在排序数组中出现的次数(改动)
- 前端接收pdf文件_雷达接收机的噪声系统及灵敏度
- 文本的数据导入到数据库中 mysql
- Linux下修改当前用户的最大线程数和 open files
- mysql global locks_mysql8 参考手册--NDB群集线程状态
- 人脸识别mtcnn原理
- Windows目录下SysWow64文件夹与System32文件夹
- 计算机一级考试wps教程视频教程,全国计算机等级考试一级WPS Office教程(2008年版)...
- Java通过图片URL把图片上传到本地服务器
- 外包!音频类小程序开发
- 微积分Z2J5 两个重要极限
- linux 嗅探器源码,一个简易网络嗅探器的实现
- UI设计必掌握的软件之一:Axure!
- glib实现Socket通信
- 网易云音乐歌单可视化,有多少是你收藏过的呢
- echarts饼状图中间显示数值加上名字
- JAVA编写元音字母(Switch语句)