HDU1004题解分析(字符串处理)
这道题是从上个星期开始做的,看到题时觉得似曾相似,好像做过,理了一下思路敲完代码又不对,后来发现是数组用错了,之后又重新想了数组和比较用法,昨天改了一个多小时,后来样例输出全部正确,所有情况都考虑到了,还是WA,今天上午搜了一下代码,测了一下样例,发现当所有输入不一样时,输出一个即可,是我把这种情况考虑多了,我考虑的是当所有输入不一样时,不输出,改完之后立马就AC了,我只想说:我又想多了,,,,,,
题意:给出N组字符串,判断哪一个字符串出现的次数最多,并输出该字符串。当N=0时,表示结束。
输入:N代表有几个字符串,然后输入字符串
输出:一组字符串中出现最多的一个
思路:首先考虑用C++中的string数组来处理比较简单,然后定义一个string s[1000]来存放字符串和一个int型的a数组来记录每个字符串出现的次数,并把a[i]的值设为0。string s[1000]中从i=0,j=0开始利用双重for循环来比较,if(s[i]==s[j])就让a[i]++,表示该字符串出现一次,然后依次判断每个字符串,当然如果该字符串出现多次,每一个不同位置的相同字符串出现次数一样多,不影响次数的判断。然后判断a[i中]哪个最大,也就表示s数组中哪个字符串出现的次数最多,把i赋值给k,输出s[k],程序结束。
特殊情况考虑:当所有字符串只出现一次,也就是max=1时,应该怎么办? 答案是:输出其中一个,我的程序中是输出了第一个。(刚开始WA就是错在这)
代码解释:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s[1000]; //定义字符串数组和整型数组
int a[1000];
int n;
while(cin>>n) //输入n表示有n个字符串
{
if(n==0) //当n=0时,表示程序结束
return 0;
for(int i=0;i<n;i++) //输入n个字符串,并把a[i]设为0
{
cin>>s[i];
a[i]=0;
}
for(i=0;i<n;i++) //双重for循环判断字符串出现次数,并用a[i]来记录
{
for(int j=0;j<n;j++)
{
if(s[i]==s[j])
a[i]++;
}
}
int max=0, k;
for(i=0;i<n;i++) //设最大值max=0,判断a[i]的最大值即出现最多次,把最大值的下标i赋值给k
{
if(max<a[i])
{
max=a[i];
k=i;
}
} //本来加了一个if(max==1)的判断 即当所有的字符串只出现一次 return 0,结果是错的
cout<<s[k]<<endl;
}
return 0;
}
说了这么多,不知道大家理解木有,这道题其实是道水题,只不过对于我来说可能要多考虑一些时间,水平有限,大家将就着看吧
贴一个比较好的代码,容易理解,以作参考
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int n;
while(cin>>n&&n)
{
string str[1001];
for(int i=1;i<=n;i++)
{
cin>>str[i];
}
sort(str+1, str+n+1);
int sum[1001];
for( i=1;i<=n;i++)
sum[i]=1;
int max=1;
for( i=2;i<=n;i++)
{
if(str[i]==str[i-1])
{
sum[i]+=sum[i-1];
}
if(sum[i]>=sum[max])
max=i;
}
cout<<str[max]<<endl;
}
return 0;
}
HDU1004题解分析(字符串处理)的更多相关文章
- leetCode 题解之字符串中第一个不重复出现的字符
1.题目描述 Given a string, find the first non-repeating character in it and return it's index. If it doe ...
- Redis 数据类型分析 字符串 哈希 列表 集合 有序集合 优缺点 分析 注意事项 存储结构
一.提高Redis使用性能秘诀 KEY尽量少的原则,能放在1个KEY的就放入1个KEY,KEY开销很大尽量减少与Redis发生的交互次数,能批量的就批量,能事务.管道的就事务.管道从业务架构分析确定使 ...
- HDU 1880 题解(字符串哈希)
题面: 魔咒词典 Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU 2023题解分析
我想说这道题我还没弄明白我错哪了,交了20多遍一直都是Runtime Error,改了N次还是不对,后来搜了一下,说是数组开小了,又把数组开大,还不对,又改发现一个平均值求错,再改,还不对,洗洗睡吧. ...
- 11.15 gryz校测(题解分析报告)
T1 心有灵犀 (cooperate) 题目大意 给你一个不超过 \(10^9\) 的数字 \(n\) 和一个交换次数上限 \(k\), 每次操作对这个 数字 \(n\) 的其中两位进行交换, 比如 ...
- 用javap命令反编译来分析字符串问题
编写Test.java.编译完后生成Test.class文件,然后对该文件运行javap -c Test命令,生成字节码指令.阅读并得出结论 一.s1和s2指向常量池的不同常量 ①java代码 pub ...
- C语言-字符串典型问题分析
1.典型问题一 下面的程序输出什么为什么? #include <stdio.h> int main() { ] = {}; char src[] = ...
- #P4770 [NOI2018]你的名字 的题解
题目背景 实力强大的小A 被选为了ION2018 的出题人,现在他需要解决题目的命名问题. 题目描述 小A 被选为了ION2018 的出题人,他精心准备了一道质量十分高的题目,且已经把除了题目命名以外 ...
- 剑指 Offer 67. 把字符串转换成整数 + 字符串
剑指 Offer 67. 把字符串转换成整数 Offer_67 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...
随机推荐
- 在PADS LAYOUT中如何隐藏不需要的鼠线?
如下图示,将net GPR_0的鼠线隐藏. 鼠标右键,选择网络----选择你要隐藏的网络------右键选择view nets----点击对话框右边View List里你所选的网络-----在右下角t ...
- 一个简单的反射连接程序(修改文件时间,以及创建Windows服务)
program SvrDemo; uses Windows, WinSvc, winsock; const RegName = 'SvrDemo'; var szServiceName: p ...
- Android使用XML全攻略(2)
Android使用XML全攻略(2) Android 是针对移动设备的一种新兴的开源操作系统和 SDK.借助它,您可以创建功能强大的移动应用程序.当您的应用程序可以访问 Web 服务时,其吸引力会 ...
- D3.js学习记录 - 数据类型【转】【新】
1.变量 JAVASCRIPT的变量是一种类型宽松的语言.定义变量不用指定数据类型.而且还是动态可变的. var value = 100;value = 99.9999;value = false;v ...
- ssm框架理解
SSM框架理解 最近两星期一直在学JavaEE的MVC框架,因为之前学校开的JavaEE课程就一直学的吊儿郎当的,所以现在真正需要掌握就非常手忙脚乱,在此记录下这段时间学习的感悟,如有错误,希望大牛毫 ...
- kohana(3.2)和gleez(1.1.5)的安装
*保证在kohanna的环境下安装gleez 一.配置虚拟主机(即添加端口:例如localhost:801) 以http://www.gleezcms.com为例 1: cd /etc/apache2 ...
- 普通IT和文艺IT工程师的区别
在一个UITableView的editing设置的方法实现过程中,我想到两种写法,顺便想了一下两种方法的区别.觉得这时一个普通IT工程师和NB工程师的区别一个有趣的印记. 您通常时怎么去实现的呢? - ...
- POJ 2823 Sliding Window 【单调队列】
题目链接:http://poj.org/problem?id=2823 题目大意:给出一组数,一个固定大小的窗体在这个数组上滑动,要求出每次滑动该窗体内的最大值和最小值. 这就是典型的单调队列,单调队 ...
- hdu 4105 贪心思想
淋漓尽致的贪心思想 波谷一定是一位数.波峰一位数不够大的时候加入到两位数就一定够大了的. 当在寻找波谷碰到零了就自然当成波谷. 当在寻找波峰时碰到零时,将前面的波谷加到前一个波峰上.让当前的零做波谷, ...
- mysql 更改自动增长列的初始值
alter table t_Myxiao7 AUTO_INCREMENT 3; -- 从三开始 ITOKIT.COM提示:如果表中数据没有用.如果直接删除数据,自动增长ID还是不会从1开始的,可以 ...