zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯 历届试题 翻硬币

    问题描述
    小明正在玩一个“翻硬币”的游戏。
    
    桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。
    
    比如,可能情形是:**oo***oooo
    
    如果同时翻转左边的两个硬币,则变为:oooo***oooo
    
    现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?
    
    我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求:
    
    输入格式
    两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000
    
    输出格式
    一个整数,表示最小操作步数。
    
    样例输入1
    **********
    o****o****
    样例输出1
    5
    样例输入2
    *o**o***o***
    *o***o**o***
    样例输出2
    1
    
    import java.util.Scanner;
    
    public class Main {
        
        public static void reverse(char[] A, int i) {
            if(A[i] == 'o')
                A[i] = '*';
            else if(A[i] == '*')
                A[i] = 'o';
        }
        
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            String A = in.next();
            String B = in.next();
            int result = 0;
            char[] arrayA = A.toCharArray();
            char[] arrayB = B.toCharArray();
            for(int i = 0;i < arrayA.length - 1;i++) {
                if(arrayA[i] != arrayB[i]) {
                    reverse(arrayA, i);
                    reverse(arrayA, i + 1);
                    result++;
                }
            }
            System.out.println(result);
        }
    }
    
  • 相关阅读:
    uva 10369 Arctic Network
    uvalive 5834 Genghis Khan The Conqueror
    uvalive 4848 Tour Belt
    uvalive 4960 Sensor Network
    codeforces 798c Mike And Gcd Problem
    codeforces 796c Bank Hacking
    codeforces 768c Jon Snow And His Favourite Number
    hdu 1114 Piggy-Bank
    poj 1276 Cash Machine
    bzoj 2423 最长公共子序列
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947826.html
Copyright © 2011-2022 走看看