翻硬币(第四届蓝桥杯省赛C++B组)(java版)

java 复制代码
//翻硬币,每次都会改变两个硬币的状态
//因此我们可以从前往后枚举,s1[i] 与 s2[i] 状态不同就改变它的状态
//同时s1[i + 1] 与 s2[i + 1] 的状态会因此改变
// 所以继续往下枚举s1[i + 1] 与 s2[i + 1]
//因为题目有说必须有解,因此枚举到 n - 1位的时候,两个字符串的最后一位一定相同
//这时操作的步数即是最小值
//该题是费解的开关的简化版
// 费解的开关是第一行影响第二行,第二行影响第三行...
//这一题是第一个硬币影响第二个硬币,第二个硬币影响第三个硬币...
import java.io.*;
public class Main
{
    static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    static int N = 110;
    static char[] s1 = new char[N];
    static char[] s2 = new char[N];
    static int res;
    
    public static void main(String[] args)throws IOException
    {
        s1 = in.readLine().toCharArray();
        s2 = in.readLine().toCharArray();
        
        //n个数,可以按 n - 1次
        for(int i = 0;i < s1.length - 1;i++)
        {
            if(s1[i] != s2[i])
            {
                turn(i);
                turn(i + 1);
                res++;
            }
        }
        System.out.print(res);
        in.close();
    }
    public static void turn(int i)
    {
        if(s1[i] == '*') s1[i] = 'o';
        else s1[i] = '*';
    }
}

写完这一题可以去尝试:费解的开关

还有这一题:飞行员兄弟

相关推荐
橘子郡1234 分钟前
观察者模式和发布订阅模式对比,Java示例
java
指针满天飞4 分钟前
Collections.synchronizedList是如何将List变为线程安全的
java·数据结构·list
Java技术小馆6 分钟前
重构 Controller 的 7 个黄金法则
java·后端·面试
CoovallyAIHub13 分钟前
方案 | 动车底部零部件检测实时流水线检测算法改进
深度学习·算法·计算机视觉
CoovallyAIHub15 分钟前
方案 | 光伏清洁机器人系统详细技术实施方案
深度学习·算法·计算机视觉
lxmyzzs19 分钟前
【图像算法 - 14】精准识别路面墙体裂缝:基于YOLO12与OpenCV的实例分割智能检测实战(附完整代码)
人工智能·opencv·算法·计算机视觉·裂缝检测·yolo12
洋曼巴-young21 分钟前
240. 搜索二维矩阵 II
数据结构·算法·矩阵
金銀銅鐵26 分钟前
[Java] 以 IntStream 为例,浅析 Stream 的实现
java·后端
汉汉汉汉汉33 分钟前
C++11新特性详解:从列表初始化到线程库
c++
曳渔1 小时前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp