北邮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 ...
随机推荐
- 基于jquery 封装的 select 小控件,解决 IE6 7 8里 select 边框 高度 无法遮挡等问题
一.基本原理 select控件在浏览器中是个永远的痛,不同的版本解析出来的可谓五花八门.主要有以下问题: 1,IE6中无法设置高度,Z INDEX永远在最上,无法被其它层遮挡 2,IE7中可以设置高度 ...
- PHP 绘图技术
1.图片格式:目前网站开发常见的图片格式有gif,jpg/jpeg,png ..... 区别: gif 图片压缩率高,但是只能显示256色,可能造成颜色的丢失,可以显示动画 jpg/jpeg 图片压缩 ...
- Number,parseInt,parseFloat函数
Number,parseInt,parseFloat函数 console.group('Number'); console.log(Number( console.log(Number( consol ...
- HTML <head>
HTML <head> 元素 <head> 元素包含了所有的头部标签元素.在 <head>元素中你可以插入脚本(scripts), 样式文件(CSS),及各种met ...
- ListView 的三种数据绑定方式
ListView 的三种数据绑定方式 1.最原始的绑定方式: public ObservableCollection<object> ObservableObj; public Mai ...
- SecureCRT 选择Courier New等其他字体.
http://justwinit.cn/post/5813/ 如何解决SecureCRT无法选择Courier New等其他字体最终解决办法:到C:\Windows\Fonts目录下,找到Courie ...
- CF448C [Painting Fence]递归分治
题目链接:http://codeforces.com/problemset/problem/448/C 题目大意:用宽度为1的刷子刷墙,墙是一长条一长条并在一起的.梳子可以一横或一竖一刷到底.求刷完整 ...
- MySQL 存储表情字符
摘要 在 MySQL 中直接存储表情的时候,会出现无法插入数据的错误. 这是由于一般情况下,MySQL 的字符集是 utf8,而对于 emoji 表情的 mysql 的 utf8 字符集是不支持,需要 ...
- io的四个分类
1.首先是字节操作:InputStream和OutputStream 2.字符操作:Reader和Writer 3.磁盘操作:File 4.网络操作:scoket(不在java.io包)
- 《Effective Objective-C 2.0》 读后总结
感觉自己最近提升很慢了.然后去找了一些面试题看看.发现自己自大了.在实际开发中,让我解决bug.编写功能,我有自信可以完成.但是对项目更深层的思考,我却没有.为了能进到自己的目标BAT.也为了让自己更 ...