字串轉換 北郵OJ90

2021-09-11 08:30:16 字數 1749 閱讀 3506

時間限制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...