北邮OJ

时间:2022-09-18 19:04:15

90. 字符串转换

时间限制 1000 ms 内存限制 65536 KB

题目描述

我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"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的更多相关文章

  1. 北邮oj 104&period; 912星球的研究生

    104. 912星球的研究生 时间限制 1000 ms 内存限制 65536 KB 题目描述 最近912星球的研究生入学了,912星球的教务处因此忙的焦头烂额,要求yzr做一个信息管理系统登陆查询研究 ...

  2. 北邮oj 97&period; 二叉排序树

    97. 二叉排序树 时间限制 1000 ms 内存限制 65536 KB 题目描述 二叉排序树,也称为二叉查找树.可以是一颗空树,也可以是一颗具有如下特性的非空二叉树: 若左子树非空,则左子树上所有节 ...

  3. 北邮oj 题

    题目描述 Every year,prince prepares a birthday gift for princess.The gift is a box,which is decorated wi ...

  4. 【经验总结】北邮OJ

    90. 字符串转换 时间限制 1000 ms 内存限制 65536 KB 题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而&quot ...

  5. 北邮OJ 89&period; 统计时间间隔 java版

    89. 统计时间间隔 时间限制 1000 ms 内存限制 65536 KB 题目描述 给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间.给出的时间一定满足的形式,其中x和y分别 ...

  6. 北邮14&amp&semi;18年软院机试【参考】答案

    2014 Problem A. 奇偶求和 题目描述: 给定N个数,分别求出这N个数中奇数的和以及偶数的和. 输入格式 第一行为测试数据的组数T(1<=T<=50).请注意,任意两组测试数据 ...

  7. 南邮oj&lbrack;1401&rsqb; 乘车费用

    Description lqp家离学校十分十分远,同时他又没有钱乘taxi.于是他不得不每天早早起床,匆匆赶到公交车站乘车到学校.众所周知CZ是个公交车十分发达的地方,但是CZ的公交车十分的奇怪,lq ...

  8. 北邮新生排位赛1解题报告d-e

    话说cdsn要是前面插入源代码又什么都不放就会出现奇怪的源代码?不知道是哪个网页的 407. BLOCKS 时间限制 1000 ms 内存限制 65536 KB 题目描述 给定一个N∗M的矩阵,求问里 ...

  9. 北邮新生排位赛1解题报告a-c

    <div class="page-header" style="padding-bottom: 9px; margin: 20px 0px 30px; border ...

随机推荐

  1. pyqt 过滤事件

    # 过滤鼠标滚轮事件 class stepItem(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) ...

  2. C&num; 获取 mp3文件信息

    C# 获取 mp3文件信息[包括:文件大小.歌曲长度.歌手.专辑] 第一种方式:[代码已验证] // http://bbs.csdn.net/topics/390392612   string fil ...

  3. art&period;dialog&period;art 中,将子页面窗口中的值传递给父框架中

    artDialog.open.origin.document.getElementById('父元素ID').value=document.getElementById('子页面元素ID').valu ...

  4. &lbrack;纯小白学习OpenCV系列&rsqb;官方例程01:Load and Display an Image

    Version: OpenCV 2.4.9 IDE    : VS2010 OS     : Windows --------------------------------------------- ...

  5. Linux命令学习-sed

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为:         sed ...

  6. hdu1081 To the Max

    直接暴力枚举所有子矩形至少需要O(n^4)的复杂度,显然这不是一个合理的解决方法. 上述方案忽略了矩形之间的联系,进行了过多不必要的计算. 实际上如果固定矩形的左右边界,则底边在i行的矩形内数值之和与 ...

  7. Android学习笔记&lowbar;&lowbar;2&lowbar;&lowbar;Android工程目录结构

    一.创建Android工程HelloWorld . src 文件夹里的是源文件 . Android2.2 是引用的类库,这些和 java 的都一样 . gen里面的类就是 ADT 自动生成的啦,一般只 ...

  8. 记一次tomcat故障排查(转)

    1~1024之间的端口号是保留端口,通常是为特定目的预留的.虽然你的问题不是由于保留端口引起的,但是仍然建议你不要随意使用保留端口作为自定义服务的端口,如果你能早早遵循这一规则压根就不会遇到这个问题. ...

  9. log4j配置日志系统

    1. lib里加入3个包 slf4j-api, slf4j-log4j12, log4j 2. 在src下 创建log4j.properties ### direct log messages to ...

  10. 用python的requests第三方模块抓取王者荣耀所有英雄的皮肤

    本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸 下面时具体的代码,已通过python3.6测试,可以成功运行: ...