2016蓝桥杯假期任务之《翻硬币 》
来源:互联网 发布:js登录表单验证 编辑:程序博客网 时间:2024/04/30 06:17
问题描述
小明正在玩一个“翻硬币”的游戏。
桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
比如,可能情形是:**oo***oooo
如果同时翻转左边的两个硬币,则变为:oooo***oooo
现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?
我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求:
输入格式
两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000
输出格式
一个整数,表示最小操作步数。
样例输入1
**********
o****o****
o****o****
样例输出1
5
样例输入2
*o**o***o***
*o***o**o***
*o***o**o***
样例输出2
1
代码如下:
import java.util.*;public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String s1=input.next(); String s2=input.next(); char[] ch1=s1.toCharArray(); char[] ch2=s2.toCharArray(); boolean[] bl = new boolean[s1.length()]; int x=-1,y=-1; int total=0; for(int i=0;i<ch1.length;i++) { if(ch1[i]==ch2[i]) bl[i]=true; else { bl[i]=false; if(x==-1) x=i; else y=i; } if(y!=-1) { total+=y-x; x=-1;y=-1; } } System.out.println(total); }}
运行结果:
**********o****o****5*o**o***o****o***o**o***1
1 0
- 2016蓝桥杯假期任务之《翻硬币 》
- 蓝桥杯之翻硬币
- 2016蓝桥杯假期任务之《振兴中华》
- 2016蓝桥杯假期任务之《 黄金连分数》
- 2016蓝桥杯假期任务之《有理数类》
- 2016蓝桥杯假期任务之《三部排序》
- 2016蓝桥杯假期任务之《错误票据》
- 2016蓝桥杯假期任务之《幸运数》
- 2016蓝桥杯假期任务之《带分数》
- 2016蓝桥杯假期任务之《武功秘籍》
- 2016蓝桥杯假期任务之《切面条》
- 2016蓝桥杯假期任务之《猜字母》
- 2016蓝桥杯假期任务之《圆周率》
- 2016蓝桥杯假期任务之《扑克序列》
- 2016蓝桥杯假期任务之《分糖果》
- 2016蓝桥杯假期任务之《饮料换购》
- 2016蓝桥杯假期任务之《括号问题》
- 2016蓝桥杯假期任务之《复数运算》
- ecshop怎么得到商品属性的值
- Android开发涉及到的英文
- 《Java实战开发经典》第六章6.3
- [leetcode 156]Binary Tree Upside Down
- 归并排序(解析及代码实现)
- 2016蓝桥杯假期任务之《翻硬币 》
- win10 UWP MessageDialog 和 ContentDialog
- [BZOJ 4409] [Usaco2016 Feb]Circular barn
- 区间比较equal
- 【leetcode】Array—— Majority Element(169)
- 生成真静态页面
- C++队列、栈的基本用法
- string的常用代码
- 试问蓝桥杯有多水,一道题就能回答你(吐槽,坑)