约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。
分析: 由排序不等式,出现次数最多的字母显然应该给26。所以这个题目变成了统计每种字母出现的次数了,然后按照出现次数从大到小,依次分配从高到低的权值。这就是最朴素的贪心思想。
输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。
由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。
dad
77
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char a[];
int b[],ans;
int main()
{
cin>>a;
for(int i=;i<=strlen(a);i++)
{
if(a[i]=='a'||a[i]=='A') b[]++;
if(a[i]=='b'||a[i]=='B') b[]++;
if(a[i]=='c'||a[i]=='C') b[]++;
if(a[i]=='d'||a[i]=='D') b[]++;
if(a[i]=='e'||a[i]=='E') b[]++;
if(a[i]=='f'||a[i]=='F') b[]++;
if(a[i]=='g'||a[i]=='G') b[]++;
if(a[i]=='h'||a[i]=='H') b[]++;
if(a[i]=='i'||a[i]=='I') b[]++;
if(a[i]=='j'||a[i]=='J') b[]++;
if(a[i]=='k'||a[i]=='K') b[]++;
if(a[i]=='l'||a[i]=='L') b[]++;
if(a[i]=='m'||a[i]=='M') b[]++;
if(a[i]=='n'||a[i]=='N') b[]++;
if(a[i]=='o'||a[i]=='O') b[]++;
if(a[i]=='p'||a[i]=='P') b[]++;
if(a[i]=='q'||a[i]=='Q') b[]++;
if(a[i]=='r'||a[i]=='R') b[]++;
if(a[i]=='s'||a[i]=='S') b[]++;
if(a[i]=='t'||a[i]=='T') b[]++;
if(a[i]=='u'||a[i]=='U') b[]++;
if(a[i]=='v'||a[i]=='V') b[]++;
if(a[i]=='w'||a[i]=='W') b[]++;
if(a[i]=='x'||a[i]=='X') b[]++;
if(a[i]=='y'||a[i]=='Y') b[]++;
if(a[i]=='z'||a[i]=='Z') b[]++;
}
sort(b+,b+);
int k=,d=;
while(k){
if(b[d]!=){
ans+=b[d]*k;
k--;
d--;
}
else break;
}
cout<<ans;
}
如果对你有所帮助,别忘了加好评哦;么么哒!!下次见!88
- > 贪心基础入门讲解一——完美字符串的更多相关文章
-
- >; 贪心基础入门讲解五——任务执行顺序
分析: 本题可以抽象成,从一个整数开始,每次减去a,再加上b (a,b都是正数),要求每次操作都不产生负数. 针对本题a[i] = R[i], b[i] = R[i] – O[i],注意O[i] &l ...
-
- >; 贪心基础入门讲解二——活动安排问题
有若干个活动,第i个开始时间和结束时间是[Si,fi),只有一个教室,活动之间不能交叠,求最多安排多少个活动? 分析: 我们就是想提高教室地利用率,尽可能多地安排活动.考虑容易想到的几种贪心策略: ( ...
-
- >; 贪心基础入门讲解三——活动安排问题二
有若干个活动,第i个开始时间和结束时间是[Si,fi),活动之间不能交叠,要把活动都安排完,至少需要几个教室? 分析:能否按照之一问题的解法,每个教室安排尽可能多的活动,即按结束时间排序,再贪心选 ...
-
- >; 贪心基础入门讲解四——独木舟问题
n个人,已知每个人体重,独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人.显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟? 分析: 一个显然的策略 ...
-
Swift语法基础入门二(数组, 字典, 字符串)
Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...
-
(贪心 字符串 打好基础)51nod 1182完美字符串
约翰认为字符串的完美度等于它里面所有字母的完美度之和.每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数. 约翰不在乎字母大小写(也就是说字母A和a的完美度相同).给 ...
-
python基础入门 整型 bool 字符串
整型,bool值,字符串 一.整型 整型十进制和二进制 整型:整型在Python中的关键字用int来表示; 整型在计算机中是用于计算和比较的 可进行+ - * / % //(整除) **(幂运算) 十 ...
-
【JAVA零基础入门系列】Day6 Java字符串
字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...
-
016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值
016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值 本文知识点:字面值 关于字面值的概念,需要注意:很多地方,我们可能就把字面值 ...
随机推荐
-
[手机取证] 绕过屏幕锁定启用调试模式-For Android 4.4.2
Google在Android 4.x中引入了调试信任机制,类似于iOS,在设备有屏幕密码的情况下首次连接(或未记住计算机)的情况下, 需要首先打开屏幕锁定后才可进行调试启用操作. 在Android 4 ...
-
内存映射MMAP和DMA【转】
转自:http://blog.csdn.net/zhoudengqing/article/details/41654293 版权声明:本文为博主原创文章,未经博主允许不得转载. 这一章介绍Linux内 ...
-
IIS 之 添加绑定域名 或 设置输入IP直接访问网站
1.打开IIS,右键站点 → 编辑绑定,弹出“网站绑定”窗口,如下图: 2.点击“添加”,弹出“添加网站绑定”窗口,如下图: 注意:若想输入 IP 地址直接访问,则可以有以下两种设置任一均可: ...
-
spring MVC通过json与前台交互
这里用的是spring4.1.4,jquery2.1.3,其它环境为:myeclipse2014,tomcat7,jdk7 首先,新建一个web工程,并导入springMVC的jar包(为了方便起见我 ...
-
c++ 复制构造函数和赋值函数
c++ 自动提供了下面这些成员函数 1默认构造函数 2.复制构造函数 3.赋值操作符 4.默认析构函数 5.地址操作符 赋值构造函数copy construtor 用于将一个对象复制到新创建的对象中, ...
-
【树莓派】Linux应用相关:自动删除n天前日志
linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...
-
Python抓取成都房价信息
Python里scrapy爬虫 scrapy爬虫,正好最近成都房价涨的厉害,于是想着去网上抓抓成都最近的房价情况,顺便了解一下,毕竟咱是成都人,得看看这成都的房子我以后买的起不~ 话不多说,进入正题: ...
-
apache故障处理
注意:修改虚拟机主机html路径不需要修改主配置这一行. DocumentRoot "/var/www" 1.Permission denied: [client 10.10.2. ...
-
设计模式之Singleton模式和Strategy模式是什么
Singleton模式 单例模式,也交单子模式,有时候系统只需要拥有一个全局对象. 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建.这个类提供了一种访问其唯一的对象的方 ...
-
LeetCode 77 Combinations(排列组合)
题目链接:https://leetcode.com/problems/combinations/#/description Problem:给两个正数分别为n和k,求出从1,2.......n这 ...