北邮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 ...
随机推荐
- Zepto swipe 无效(坑)
Zepto 滑动插件 bug Zepto 的 'swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown' 触摸事件在安卓4.4系统中除chro ...
- jQuery原型技术分解
jQuery原型技术分解 起源----原型继承 用户过javascript的都会明白,在javascript脚本中到处都是 函数,函数可以归置代码段,把相对独立的功能封闭在一个函数包中.函数也可以实现 ...
- Raphael的Braille例子
Raphael的Braille例子: 注意里面的split(' ')方法,竟然会split出来空元素: <%@ page language="java" contentTyp ...
- Firebug及YSlow简介与使用图文详解
Firebug本是Firefox浏览器下一个出色的网页设计插件,随着浏览器的发展,Firebug也推出了支持IE.Opera.Chrome的Firebug Lite.凭借Firebug的出色代码调试功 ...
- mac下为gdb创建证书赋权其调试其它应用
1 使用/Applications/Utilities/Keychain Access.app创建证书 钥匙串访问->证书助理->创建证书 给证书随笔取一个名字,身份类型"自签名 ...
- 转载:深入探讨 Java 类加载器
转载地址 : http://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 深入探讨 Java 类加载器 类加载器(class loader) ...
- ubuntu下mysql二进制包安装
1.下载对应二进制包 cd /usr/local/srcsudo wget http://dev.mysql.com/downloads/file/?id=465030 2.解压并放在/usr/loc ...
- POI-处理大Excel文件(xls)
最近需要处理一个比较大的excel文件,但是poi在处理文件时会抛出OOM导致程序崩溃,查看官方文档看到可以以流式的方式读取excel避免读取大文件时的OOM.本文主要记述xls的处理. 环境模拟 先 ...
- [笔记]A Practical Guide to Support Vector Classication
<A Practical Guide to Support Vector Classication>是一篇libSVM使用入门教程以及一些实用技巧. 1. Basic Kernels: ( ...
- Express之托管静态文件
中间件express.static 我们使用express初始化一个目录的时候,会在app.js中看到一大推的app.use. 其中一个主要的中间件是express.static(4.0版本依旧保留的 ...