原題連接ios
小明正在玩一個「翻硬幣」的遊戲。c++
桌上放着排成一排的若干硬幣。咱們用 * 表示正面,用 o 表示反面(是小寫字母,不是零)。spa
好比,可能情形是:**oo***oooo
3d
若是同時翻轉左邊的兩個硬幣,則變爲:oooo***oooo
code
如今小明的問題是:若是已知了初始狀態和要達到的目標狀態,每次只能同時翻轉相鄰的兩個硬幣,那麼對特定的局面,最少要翻動多少次呢?blog
咱們約定:把翻動相鄰的兩個硬幣叫作一步操做。遊戲
兩行等長的字符串,分別表示初始狀態和要達到的目標狀態。ci
一個整數,表示最小操做步數字符串
輸入字符串的長度均不超過100。
數據保證答案必定有解。get
********** o****o****
5
*o**o***o*** *o***o**o***
1
#include <cstring> #include <iostream> #include <algorithm> using namespace std; const int N=110; int res=0; char start[N],env[N]; void change(int i)//反轉 { if(start[i]=='*') start[i]='o'; else start[i]='*'; } int main() { cin>>start>>env;//輸入兩行等長的字符串,分別表示初始狀態和要達到的目標狀態 int n; n=strlen(start); for(int i=0;i<n-1;i++) { if(start[i] != env[i]) { change(i),change(i+1); res++; } } cout<<res; return 0; }