zoukankan      html  css  js  c++  java
  • 蓝桥杯 1453 翻硬币 (找规律)

    题目描述

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

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

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

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

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

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

    输入

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

    输出

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

    样例输入

    ooo***

    ooo***

    样例输出

    1

    分析:

    首先要找到那些位置的硬币是不相同的,然后对于不相同的两个硬币,如果两个硬币是相邻的话,那么我们只需要把他们翻动一次就行了,因为每一次只能翻动两个相邻的硬币,如果两个不同的硬币比相邻的话,我们就要从前一个开始,两个两个的往后翻动(第一次翻动第一个、第二个,第二次翻动第二个、第三个···)这样的话除了第一个和最后一个其他的反动的都是两次,硬币状态并没有改变,第一个和最后一个相反,这样就达到我们的目的。
    代码:

        #include <iostream>
        #include<string.h>
          using namespace std;
          int main()
          {
              char str1[1000];
              char str2[1000];
              int bj[1000];    //记录两个字符串的比较结果,0为相同,1为不同。 
              while(cin>>str1)
        	  {
                cin>>str2;
                 int l;
                 int k=strlen(str1);    //计算长度 
                 for(int i=0;i<k;i++){    //比较两个字符串,并记录结果 
                     if(str1[i]==str2[i])
                         bj[i]=0;
                     else
                         bj[i]=1;
                 }
                 int flag=-1;    //记录标记位 
                 int _count=0;
                 for(int i=0;i<k;i++)
        		 {
                     if(bj[i]==1)
        			 {    //检测到一个 1 
                         if(flag==-1)
        				 {    //如果前面没有记录的1的下标,记录当前1的下标 
                             flag=i;
                         } 
                         else
        				 {    //如果前面有一个1了 
                             _count+=i-flag;
                             flag=-1;
                         }
                     }
                 }
                 cout<<_count ; 
             }
             return 0;
         }
    
  • 相关阅读:
    汉罗塔问题
    有进度条圆周率计算
    turtle库笔记
    OwnCloud建立属于自己私有的云存储网盘
    HTTP 常见请求状态码
    虚拟机部署Kubernetes集群
    常用文件头(16进制)
    配置LAMP环境
    Linux系统日志
    Java的socket通信与操作系统的SocketAPI关系探究
  • 原文地址:https://www.cnblogs.com/cmmdc/p/6729615.html
Copyright © 2011-2022 走看看