[NOIP2008 提高组] 笨小猴-map容器用来标记

题目描述
笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!

这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。

输入格式
一个单词,其中只可能出现小写字母,并且长度小于100100。

输出格式
共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;

第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出00。

输入输出样例
输入
error
输出
Lucky Word
2
输入
olympic
输出
No Answer
0

解题思路:
法一:
用map容器,map<char,int >m,那么m数组就相当于m[char] = int,举个例子,如果我们用普通数组来计算,我们定义a[1] = 1表示意思是1出现了1次,那么a[1] = 3,就是a出现了3次,那么map容器,m[a] = 3,就是a出现了3次。

法一:
代码如下:

#include <iostream>
#include <map>
#include <cmath>
using namespace std;bool check(int x) {if (x == 0 || x == 1)return false;for (int i = 2; i <= sqrt(x); i++) {if (x % i == 0)return false;}return true;
}int main() {map<char, int>m;string a;cin >> a;int maxs = 0;int mins = 1000;for (int i = 0; i < a.length(); i++) {m[a[i]]++;//这里的a[i]是char型,所以就跟我们上面例子一样.}for (int i = 0; i < a.length(); i++) {maxs = max(maxs, m[a[i]]);mins = min(mins, m[a[i]]);}if (check(maxs - mins)) {cout << "Lucky Word" << endl;cout << maxs - mins << endl;} else {cout << "No Answer" << endl;cout << "0" << endl;}return 0;
}

不过,写代码时我们要注意,不要写成这样:

#include <iostream>
#include <map>
#include <cmath>
using namespace std;bool check(int x) {if (x == 0 || x == 1)return false;for (int i = 2; i <= sqrt(x); i++) {if (x % i == 0)return false;}return true;
}int main() {map<char, int>m;string a;cin >> a;int maxs = 0;int mins = 1000;for (int i = 0; i < a.length(); i++) {m[a[i]]++;//这里的a[i]是char型,所以就跟我们上面例子一样.maxs = max(maxs, m[a[i]]);mins = min(mins, m[a[i]]);}if (check(maxs - mins)) {cout << "Lucky Word" << endl;cout << maxs - mins << endl;} else {cout << "No Answer" << endl;cout << "0" << endl;}return 0;
}

原因就是,如果我们一边遍历一边比较大小,那么比如aabbbb,第一次a出现的次数是1,一比较,最小值就是1,后面再出现a,a变成了2,可是比较的话,最小值还是1,所以我们一边遍历一边比较,就会导致最小值出错。

解题思路:
法二:
我们直接遍历字符串,统计每个字母出现了几次,然后找出最大值,最小值就好了,可是在我们计算最小值的时候,因为没出现过的字母是0,一定比那些出现过的值小,所以我们计算最小值会被干扰,我们用vis数组标记,只比较出现过的字母出现的次数就好了。

法二:
代码如下:

#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
const int N = 110;
bool vis[N];
int cnt[N];bool check(int x) {if (x == 0 || x == 1)return false;for (int i = 2; i <= sqrt(x); i++) {if (x % i == 0)return false;}return true;
}int main() {string a;cin >> a;for (int i = 0; i < a.length(); i++) {cnt[a[i] - 'a' + 1]++;vis[a[i] - 'a' + 1] = true;}int maxs = 0;int mins = 1000;for (int i = 1; i <= 26; i++) {if (vis[i]) {maxs = max(maxs, cnt[i]);mins = min(mins, cnt[i]);}}if (check(maxs - mins)) {cout << "Lucky Word" << endl;cout << maxs - mins << endl;} else {cout << "No Answer" << endl;cout << "0" << endl;}return 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python输入数据爬取_python根据用户需求输入想爬取的内容及页数爬取图片方法详解...

本次小编向大家介绍的是根据用户的需求输入想爬取的内容及页数。 主要步骤&#xff1a; 1.提示用户输入爬取的内容及页码。 2.根据用户输入&#xff0c;获取网址列表。 3.模拟浏览器向服务器发送请求&#xff0c;获取响应。 4.利用xpath方法找到图片的标签。 5.保存数据。 代码…

word List 50

word List 50 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

单点突破,击穿阈值,DevOps转型你需要这样做

在上篇文章里&#xff0c;我提到了如何通过对价值流进行分析、拆解关键要素指标&#xff0c;并通过缩减处理时间PT、降低前置时间LT、提高完成&准确的百分比&#xff08;C&A%&#xff09;&#xff0c;实现企业研发效能10倍速提升。大家点击回看这篇文章《以埃隆马斯克“…

双向dcdc变换器simulink仿真_二极管箝位五电平变换器Simulin仿真

● 本期为二极管箝位五电平变换器的基本Simulink仿真&#xff0c;只包含其SPWM调制。感谢公众号一位好友“一叶知秋”提供Simulink模型并分享。01二极管箝位五电平变换器调制方法传统的变换器存在高的电压变化率和共模电压&#xff0c;且波形谐波含量较大&#xff0c;使得输出滤…

[蓝桥杯2015初赛]生命之树-求树的最大子树权值和

题目描述 在X森林里&#xff0c;上帝创建了生命之树。 他给每棵树的每个节点(叶子也称为一个节点)上&#xff0c;都标了一个整数&#xff0c;代表这个点的和谐值。 上帝要在这棵树内选出一个非空节点集S&#xff0c;使得对于S中的任意两个点a,b&#xff0c;都存在一个点列 {a, …

在.NET Core中使用MachineKey

在.NET Core中使用MachineKey在上篇文章中&#xff0c;我介绍了 Cookie是基于 MachineKey生成的&#xff0c; MachineKey决定了 Cookie生成的算法和密钥&#xff0c;并如果使用多台服务器做负载均衡时&#xff0c;必须指定一致的 MachineKey。但在 .NETCore中&#xff0c;官方似…

cg word List 1

cg word List 1 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢!

[蓝桥杯2016初赛]剪邮票-dfs+next_permutation(好题)

题目描述 如下图, 有12张连在一起的12生肖的邮票。现在你要从中剪下5张来&#xff0c;要求必须是连着的。&#xff08;仅仅连接一个角不算相连&#xff09; 比如&#xff0c;下面两张图中&#xff0c;粉红色所示部分就是合格的剪取。 请你计算&#xff0c;一共有多少种不同…

cg word List2

cg word List 2 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

如何扩展分布式日志组件(Exceptionless)的日志通知?

作者&#xff1a;justmine头条号&#xff1a;大数据与云原生微信公众号&#xff1a;大数据与云原生创作不易&#xff0c;在满足创作共用版权协议的基础上可以转载&#xff0c;但请以超链接形式注明出处。为了方便阅读&#xff0c;微信公众号已按分类排版&#xff0c;后续的文章…

hadoop hive集群_基于伪分布式Hadoop搭建Hive平台详细教程

一、搭建环境的前提条件环境&#xff1a;Linux系统Hadoop-2.6.0MySQL 5.6apache-hive-2.3.7这里的环境不一定需要和我一样&#xff0c;基本版本差不多都ok的&#xff0c;所需安装包和压缩包自行下载即可。但是注意hive和hadoop都是2.x系列版本的。这里提供一个我下载的hive版本…

[蓝桥杯2017初赛]九宫幻方-数论+next_permutation枚举

题目描述 小明最近在教邻居家的小朋友小学奥数&#xff0c;而最近正好讲述到了三阶幻方这个部分。 三阶幻方指的是将1~9不重复的填入一个33的矩阵当中&#xff0c;使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称作九宫格&#xff0c;在小学奥数里有一句非常…

cg word List 3

cg word List 3 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

.NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(上)

07 | 用Autofac增强容器能力&#xff1a;引入面向切面编程&#xff08;AOP&#xff09;的能力这一节讲解使用第三方框架来扩展依赖注入容器什么情况下需要我们引入第三方容器组件&#xff1f;大部分情况下&#xff0c;默认的容器组件足够使用当需要一些非常特殊的场景如下&…

sql 对groupby 后的数据limit_SQL(三)——汇总分析

1. 汇总分析函数的3个功能&#xff1a;①功能&#xff1b;②输入&#xff08;参数&#xff09;&#xff1b;③输出&#xff08;返回值&#xff09;查询课程编号为“0002”的总成绩&#xff1a;查询选了课程的学生人数&#xff1a;2.分组sql分组:group bygroup by 实现数据分组&…

cg word List4

cg word List4 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

通过 Serverless 加速 Blazor WebAssembly

Blazor ❤ Serverless我正在开发 Ant Design 的 Blazor 版本&#xff0c;预览页面部署在 Github Pages 上&#xff0c;但是加载速度很不理想&#xff0c;往往需要 1 分钟多钟才完成。项目地址&#xff1a;https://github.com/ElderJames/ant-design-blazor[1] 求 Star。当寻求解…

eclipse中tomcat启动不了_Eclipse怎样与Tomcat集成

1 打开eclipse2 打开Window -> Show View -> Servers3 点击No servers are available.Click this link to create a new server...4 选择 Apache -> Tomcat v9.0 Server&#xff0c;tomcat的版本可以根据本机安装的tomcat版本选择&#xff0c;然后点击Next5 Name不需要…

树的存储结构-双亲表示法

特点:找双亲容易&#xff0c;找孩子难 代码如下&#xff1a; #include <iostream> using namespace std; typedef char ElemType; #define MAX_Tree_size 100 typedef struct PTNode {ElemType data;int parent;//双亲位置域 }PTNode;typedef struct {PTNode nodes[MA…

cg word List5

## cg word List5 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;