北邮OJ
90. 字符串转换
题目描述
我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而"abcd"则不是简单串。现在给你一个仅由小写字母组成的字符串,你需要用最小的花费,将其转换成一个简单串。 花费的计算规则如下:将a到z这26个小写字母从左到右排成一排,则每个字母都有左右两个邻居,我们认为a的左邻居是z,z的右邻居是a。一个字母只能转换成其相邻的字母,转换的花费为1。一个字母可以进行多次转换,例如将a转换成d,可以进行如下的步骤: a->b->c->d,花费为3。字符串的转换花费为所有字母转换花费之和。例如将字符串"abbbz"转换成简单串的最小花费为3,转换后的结果为"bbbbb"。
输入格式
第一行一个整数T(T≤100),表示测试数据的组数。 每组测试数据只有一行,为仅含小写字母的字符串,字符串长度不超过1000。
输出格式
对于每一组数据,输出一个整数,表示将字符串转换成简单串的最小花费。
输入样例
2
abbba
abbac
输出样例
2
3
分析:两个for循环枚举输入的每组数据中的每个字符到达每个字符的花费,然后比较求出最小值输出。
//翻了个错误,只意识到向后转换没有意识到向前也可以转换,这两个中选花费最少的
//#define min(a,b) a<b?a:b
//最小值得求法 min(abs(i-j),26-abs(i-j));
#include <iostream>
#include <string>
#include <cmath>
//#include <cstdlib>
#define min(a,b) a<b?a:b
using namespace std;
int main ()
{
string mystr;
int n;
int m[1001];//暂存数据
char mych = NULL;
int cost;
int mymin;
int myout[101];
cin >> n;
for (int i_1 = 0;i_1 < n;i_1++)
{
cin >> mystr;
//计算每一个字符的花费,最后比较选出最小
for (int i_2 = 0;i_2 < mystr.length();i_2++)
{
//if (mych == mystr[i_2])//已经有过这个字母了,不需要继续比较了
//{
// continue;
//}
mych = mystr[i_2];
cost = 0;
for (int i_3 = 0;i_3 < mystr.length();i_3++)
{
cost += min(abs(mystr[i_3] - mych),26-abs((mystr[i_3] - mych)));//计算出每一个单词的花费
}
m[i_2] = cost;//暂存一组数据中每个单词的最小花费
//cout <<cost <<endl;
}
//cout << m[0]<< m[1]<< m[2]<<endl;
//比较,选出改组的最小值
mymin = m[0];
for (int i_4 = 1;i_4 < mystr.length();i_4++)
{
if (mymin > m[i_4])
{
mymin = m[i_4];
}
}
//cout << mymin <<endl;
myout[i_1] = mymin;
//cout << sizeof(m)/sizeof(m[0]) <<endl;
}
//输出结果
for (int i_5 = 0;i_5 < n; i_5++)
{
cout << myout[i_5] <<endl;
}
return 0;
}
北邮OJ的更多相关文章
- 北邮oj 104. 912星球的研究生
104. 912星球的研究生 时间限制 1000 ms 内存限制 65536 KB 题目描述 最近912星球的研究生入学了,912星球的教务处因此忙的焦头烂额,要求yzr做一个信息管理系统登陆查询研究 ...
- 北邮oj 97. 二叉排序树
97. 二叉排序树 时间限制 1000 ms 内存限制 65536 KB 题目描述 二叉排序树,也称为二叉查找树.可以是一颗空树,也可以是一颗具有如下特性的非空二叉树: 若左子树非空,则左子树上所有节 ...
- 北邮oj 题
题目描述 Every year,prince prepares a birthday gift for princess.The gift is a box,which is decorated wi ...
- 【经验总结】北邮OJ
90. 字符串转换 时间限制 1000 ms 内存限制 65536 KB 题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而" ...
- 北邮OJ 89. 统计时间间隔 java版
89. 统计时间间隔 时间限制 1000 ms 内存限制 65536 KB 题目描述 给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间.给出的时间一定满足的形式,其中x和y分别 ...
- 北邮14&18年软院机试【参考】答案
2014 Problem A. 奇偶求和 题目描述: 给定N个数,分别求出这N个数中奇数的和以及偶数的和. 输入格式 第一行为测试数据的组数T(1<=T<=50).请注意,任意两组测试数据 ...
- 南邮oj[1401] 乘车费用
Description lqp家离学校十分十分远,同时他又没有钱乘taxi.于是他不得不每天早早起床,匆匆赶到公交车站乘车到学校.众所周知CZ是个公交车十分发达的地方,但是CZ的公交车十分的奇怪,lq ...
- 北邮新生排位赛1解题报告d-e
话说cdsn要是前面插入源代码又什么都不放就会出现奇怪的源代码?不知道是哪个网页的 407. BLOCKS 时间限制 1000 ms 内存限制 65536 KB 题目描述 给定一个N∗M的矩阵,求问里 ...
- 北邮新生排位赛1解题报告a-c
<div class="page-header" style="padding-bottom: 9px; margin: 20px 0px 30px; border ...
随机推荐
- centos 6.5下安装、配置并启动SSH远程访问
centos 6.5下安装.配置并启动SSH远程访问 1.登录centos 6.5系统,使用root用户登录,如果为非root用户则执行su或su - 或su root或su - root切换为roo ...
- iOS 之 socket 与 http
http连接:短连接,发送一次请求,服务器响应后连接就断开. socket连接:长连接,连接后长期保持连接状态.
- EF Code First:实体映射
二.实体映射 实体与数据库的映射可以通过DataAnnotation与FluentAPI两种方式来进行映射: (一) DataAnnotation DataAnnotation 特性由.NET 3.5 ...
- JTree实例
JTree实例 private void createTreeByXdDdt() { DefaultComboBoxModel boxModel = (DefaultComboBoxModel) cm ...
- sqlloader外部表
一创建目录 先在系统下创建 $ cd /home/oracle $ mkdir dir $ cd dir $ pwd 再在sqlplus里创建,让oracle知道这个目录 SQL> create ...
- C#多线程-volatile、lock关键字
volatile是C#中最简单的一种同步关键字,其意义是针对程序中一些敏感数据,不允许多线程同时访问,保证数据在任何访问时刻,最多有一个线程访问,以保证数据的完整性,虽与java中的synchroni ...
- 用c3m自动生成的化学机理文件导入mfix里需要注意的一些问题
1. 首先是类似这种写法: Species_g(1) = "CH4" Species_Alias_g(1) = "CH4" 可能会报错,写在一行可能就好了,如: ...
- Lazy.js : 让 JavaScript 变懒
Lazy.js : 让 JavaScript 变懒 http://segmentfault.com/a/1190000000358463
- node源码详解(六) —— 从server.listen 到事件循环
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource6 本博客同步在https://cnodejs.o ...
- .NET 通用高扩展性的细粒度权限管理架构(webApi/Mvc)
一. 权限场景分析: 1. 系统具有角色概念, 部门概念, 且都具有相应不同的权限 2. 用户具有多个角色, 多个部门等关系, 并且能给单个用户指派独有的权限 3. 具有细粒度权限控制到资源的RBAC ...