AcWing寒假每日一題 Day10翻硬幣

2021-10-16 12:42:12 字數 1113 閱讀 5607

小明正在玩乙個「翻硬幣」的遊戲。桌上放著排成一排的若干硬幣。我們用 * 表示正面,用 o 表示反面(是小寫字母,不是零)。比如,可能情形是:∗∗o

o∗∗∗

oooo

**oo***oooo

∗∗oo∗∗

∗ooo

o。如果同時翻轉左邊的兩個硬幣,則變為:ooo

o∗∗∗

oooo

oooo***oooo

oooo∗∗

∗ooo

o。現在小明的問題是:如果已知了初始狀態和要達到的目標狀態,每次只能同時翻轉相鄰的兩個硬幣,那麼對特定的局面,最少要翻動多少次呢?我們約定:把翻動相鄰的兩個硬幣叫做一步操作。

輸入格式

兩行等長的字串,分別表示初始狀態和要達到的目標狀態。

輸出格式

乙個整數,表示最小操作步數

資料範圍

輸入字串的長度均不超過100。資料保證答案一定有解。

輸入樣例:

**********

o****o****

輸出樣例:

5
本題可以這麼想,每乙個位置的硬幣與目標狀態是否一樣只與它後面的硬幣翻動有關,因為每次是相鄰的兩個硬幣一起翻動,可將需要翻動的硬幣與後面的硬幣看作一組。且每個位置只會操作一次,如果兩次等於無意義操作。假如第乙個位置與目標狀態不一致,我們將第乙個和第二個位置硬幣反轉,然後再判斷第二個位置與目標位置是否一致,若不一致,再將第二個位置與第三個位置硬幣反轉,以此類推…

**如下(示例):

#include

#include

#include

using

namespace std;

char q[

1050

], p[

1050];

int sum;

intmain()

} cout << sum << endl;

return0;

}

acwing寒假每日一題題解

貨倉選址 頭兩天的每日一題有點水 include using namespace std int s 505 505 int i,j intmain void 語法題蛇形添數 輸入兩個整數n和m,輸出乙個n行m列的矩陣,將數字 1 到 n m 按照回字蛇形填充至矩陣中。具體矩陣形式可參考樣例。輸入格...

acwing 寒假每日一題題解

本篇部落格是基於acwing活動中的寒假每日一題 活動位址 在一條數軸上有 n 家商店,它們的座標分別為 a1 an。現在需要在數軸上建立一家貨倉,每天清晨,從貨倉到每家商店都要運送一車商品。為了提高效率,求把貨倉建在何處,可以使得貨倉到每家商店的距離之和最小。輸入格式 第一行輸入整數n。第二行n個...

AcWing寒假每日一題 Day9獎學金

某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績 語文 數學 英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那麼規定學號小的同學排在前面,這樣,每個學生的排序是唯一確定的。任...