時間限制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
/*
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。
輸出格式
對於每一組資料,輸出乙個整數,表示將字串轉換成簡單串的最小花費。
輸入樣例
2abbba
abbac
輸出樣例23
project:
date: 2019/02/26
author: frank yu
*/#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
//兩個字母最小花費
int minfee(char c1,char c2)
{ int fee1,fee2;
if(c1>c2)
{ fee1=c1-c2;
fee2='z'-c1+c2-'a'+1;
//cout<>t;
while(t--)
{ memset(count,0,sizeof(count)); //初始化統計陣列
for(int i=0;i<26;i++)flag[i]=false;//初始化標記陣列
min=9999999; //該字串的最小花費
cin>>ss;
for(int i=0;i更多資料結構與演算法實現:資料結構(嚴蔚敏版)與演算法的實現(含全部**)
北郵oj 90題(字串轉換)
題目描述 我們將僅由若干個同一小寫字母構成的字串稱之為簡單串,例如 aaaa 是乙個簡單串,而 abcd 則不是簡單串。現在給你乙個僅由小寫字母組成的字串,你需要用最小的花費,將其轉換成乙個簡單串。花費的計算規則如下 將a到z這26個小寫字母從左到右排成一排,則每個字母都有左右兩個鄰居,我們認為a的...
北郵oj 字串操作
題目 坑1.字串輸入可以有空格 坑2.有空格使用gets 函式,需要在一些地方使用getchar 函式吃掉回車 坑3.翻轉時索引不一定從0開始,擷取一半進行翻轉時要小心 include includeusing namespace std int main char buf 210 while ge...
字串轉換
我們將僅由若干個同一小寫字母構成的字串稱之為簡單串,例如 aaaa 是乙個簡單串,而 abcd 則不是簡單串。現在給你乙個僅由小寫字母組成的字串,你需要用最小的花費,將其轉換成乙個簡單串。花費的計算規則如下 將a到z這26個小寫字母從左到右排成一排,則每個字母都有左右兩個鄰居,我們認為a的左鄰居是z...