51 nod 1182 完美字符串
2016-04-13 12:13
357 查看
1182 完美字符串
题目来源: Facebook Hacker Cup选拔
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
收藏
关注
约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。
约翰不在乎字母大小写。(也就是说字母F和f)的完美度相同。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。
Input
Output
Input示例
Output示例
题目来源: Facebook Hacker Cup选拔
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
收藏
关注
约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。
约翰不在乎字母大小写。(也就是说字母F和f)的完美度相同。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。
Input
输入一个字符串S(S的长度 <= 10000),S中没有除字母外的其他字符。
Output
由你将1-26分配给不同的字母,使得字符串S的完美度最大,输出这个完美度。
Input示例
dad
Output示例
77
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <queue> #include <vector> #include <stack> using namespace std; int cmp(const int a, const int b){ return a > b; } int main(){ char s[10001]; int a[500], i; gets(s); int len = strlen(s); memset(a, 0, sizeof(a)); for(i = 0 ; i < len; ++i){ if(s[i] >= 'a'&& s[i] <= 'z'){ a[s[i]]++; } else if(s[i] >= 'A' && s[i] <= 'Z'){ s[i] = s[i] - 27; a[s[i]]++; } } sort(a, a + 150, cmp); int k = 26; int sum = 0; for(i = 0; i < 30, k >= 1; ++i, k--){ if(a[i] != 0) sum += a[i] * k; } cout << sum << endl; return 0; }
相关文章推荐
- hadoop集群配置之hive1.2.0安装部署(远程mysql)
- 水果消除-----15HNUST校赛
- 非阻塞connect的实现
- 迷宫问题(栈的应用)
- CSS文字溢出部分显示为省略号
- Animation动画讲解文章
- Wireshark表达式
- 电容器在电路中的作用(很全)
- Memcached 命令行常用命令
- [Memory] A look at the x86 "Self-referencing Page Directory trick"
- request中的各种方法
- Qt相关数据类型转换
- iOS GCD最大并发控制
- maven dubbo
- SQL性能优化:如何定位网络性能问题
- javascript性能优化:创建javascript无阻塞脚本
- JAVA事务的概念
- Oracle查询列重命名
- java中的反射机制在Android开发中的用处
- java.lang.OutOfMemoryError: Metaspace