zoukankan      html  css  js  c++  java
  • 51

    Description

    小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?

    Input

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

    Output

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

    Sample Input

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

    Sample Output

    5



    #include<cstdio>
    #include<iostream>
    #include<string>
    using namespace std;
    int main(){
        string s1,s2;
        int p1[1005],p2[1005];
        int ans=0;
        cin>>s1>>s2;
        for(int i=0 ;i<s1.length(); i++){
            if(s1[i]=='*') p1[i]=1;
            if(s1[i]=='o') p1[i]=-1;
            if(s2[i]=='*') p2[i]=1;
            if(s2[i]=='o') p2[i]=-1;
        }
        for(int i=0;i<s1.length()-1;i++){
            if(p1[i]!=p2[i]){
                ans++;
                p1[i] = -p1[i];
                p1[i+1] = -p1[i+1];
            }
        }
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    企业云盘安全性如何 怎样部署
    Sentinel 控制台部署
    nginx代理静态页面添加二级目录
    java socket
    IDEA
    golang代码生成器
    es 单节点问题
    代码模板
    错误摘要 HTTP 错误 403.14
    安装.Net Framework 4.6.2无法安装的2种情况
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/6869497.html
Copyright © 2011-2022 走看看