考试题
2 翻煎饼
Time Limit:1000MS Memory Limit:65535K
题型: 编程题 语言: 不限定
描述:
王师傅煎煎饼时,喜欢将煎饼排成一排。
如果用*表示煎饼正面,用o表示煎饼反面(是小写字母,不是零)。
比如,11个煎饼可能情形是:**oo***oooo
王师傅有一个大铲,可以同时翻转相邻的两个煎饼,被翻转的煎饼如果正面朝上就会变为反面朝上,反之依然,例如上一例同时翻转第2、3两个煎饼,则变为:*o*o***oooo
现在王师傅的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个煎饼,那么对特定的局面,最少要翻动多少次呢?
我们约定:把翻动相邻的两个煎饼叫做一步操作。
输入格式:
两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000
(假定:给定的测试数据一定能够由初始状态到达目标状态)
输出格式:
一个整数,表示最小操作步数
输入样例:
- **********
- o****o****
输出样例:
5
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
string s1,s2;
cin >> s1 >> s2;
int k=0,ans=0;
for(int i=0;i<s1.size();i++){
if(k==0&&s1[i]!=s2[i]){
ans++;
k=1;
}
else if(k==1&&s1[i]!=s2[i]){
k=0;
}
else if(k==1){
ans++;
}
}
cout << ans << '\n';
return 0;
}