經驗總結 北郵OJ

2022-04-03 17:50:20 字數 1073 閱讀 2571

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

#include

#include

//#include

#define min(a,b) acin >> n;

for (int i_1 = 0;i_1 < n;i_1++)

mych = mystr[i_2];

cost = 0;

for (int i_3 = 0;i_3 < mystr.length();i_3++)

m[i_2] = cost;//暫存一組資料中每個單詞的最小花費

//cout < m[i_4])

}//cout << mymin for (int i_5 = 0;i_5 < n; i_5++)

北郵OJ打牌

牌只有1到9,手裡拿著已經排好序的牌a,對方出牌b,用程式判斷手中牌是否能夠壓過對方出牌。規則 出牌牌型有5種 1 一張 如4 則5.9可壓過 2 兩張 如44 則55,66,77,99可壓過 3 三張 如444 規則如 2 4 四張 如4444 規則如 2 5 五張 牌型只有12345 23456...

北郵OJ虛數

乙個複數 x iy 集合,兩種操作作用在該集合上 1 pop 表示讀出集合中複數模值最大的那個複數,如集合為空 輸出 empty 不為空就輸出最大的那個複數並且從集合中刪除那個複數,再輸出集合的大小size 2 insert a ib 指令 a,b表示實部和虛部 將a ib加入到集合中 輸出集合的大...

北郵OJ樹查詢

有一棵樹,輸出某一深度的所有節點,有則輸出這些節點,無則輸出empty。該樹是完全二叉樹。輸入描述 輸入有多組資料。每組輸入乙個n 1 n 1000 然後將樹中的這n個節點依次輸入,再輸入乙個d代表深度。輸出描述 輸出該樹中第d層得所有節點,節點間用空格隔開,最後乙個節點後沒有空格。示例1輸入 41...