AcWing 1208. 翻硬币

原题链接

小明正在玩一个“翻硬币”的游戏。

桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。

比如,可能情形是:**oo***oooo

如果同时翻转左边的两个硬币,则变为:oooo***oooo

现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?

我们约定:把翻动相邻的两个硬币叫做一步操作。

输入格式

两行等长的字符串,分别表示初始状态和要达到的目标状态。

输出格式

一个整数,表示最小操作步数

数据范围

输入字符串的长度均不超过100。

数据保证答案一定有解。

输入样例1:

**********
o****o****

输出样例1:

5

输入样例2:

*o**o***o***
*o***o**o***

输出样例2:

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;
}

最新文章

  1. &lt;&lt;&lt; 网页中如何利用原生js和jquery储存cookie
  2. OC中property的有关属性
  3. Windows Server 2016正式版14393英文版ISO镜像下载:_X64FRE_ZH-CN.ISO
  4. const 用法总结
  5. bzoj3036: 绿豆蛙的归宿
  6. SharePoint 学习记事(一)
  7. float:left 与display:inline的具体区别?
  8. ORACLE模拟临时文件、日志成员、口令文件丢失情况与恢复【weber出品】
  9. Lua 基本语法
  10. OpenVPN多处理之-多队列TUN多线程
  11. coco2d-x CCDirector.h文件中变量*m_pNotificationNode*
  12. JVM垃圾收集(GC)算法
  13. 分析Class类和ClassLoader类下的同名方法getResourceAsStream
  14. 华为笔记HOSTS,便于访问云端存储
  15. Vue学习Day003
  16. toggle 1.9 以后就被删除了
  17. node api 之:util
  18. CentOS 7安装Oracle 12c
  19. 【转】dlgdata.cpp line 40 断言失败
  20. zookeeper&amp;acticemq&amp;redis&amp;tomcat安装

热门文章

  1. Tournament Chart【模拟+vector+map+string】
  2. nslookup使用及常用命令
  3. 【asp.net core 系列】10 实战之ActionFilter
  4. yii2.0数据库操作
  5. CVE-2017-7269-iis远程溢出漏洞复现
  6. Git配置仓库的用户名邮箱
  7. 在ASP.NET 中有哪些数据验证控件(请解释ASP.NET中以什么方式进行数据验证)?
  8. python自学之基础知识
  9. Docker编写镜像 发布个人网站
  10. MongoDB入门四