zoukankan      html  css  js  c++  java
  • 翻硬币


    题目标题:翻硬币

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

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

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

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

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

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

    程序输出:
    一个整数,表示最小操作步数

    例如:
    用户输入:
    **********
    o****o****

    程序应该输出:
    5

    再例如:
    用户输入:
    *o**o***o***
    *o***o**o***

    程序应该输出:
    1


    资源约定:
    峰值内存消耗 < 64M
    CPU消耗 < 1000ms

    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char a[100],b[100];    
        int n,start,ans,i;
    
    //输入字符串a,b    
        gets(a);
        gets(b);
        
        n = strlen(a);
        start = -1;        //用于标记 
        ans = 0;    //用于计数 
        
        for(i=0;i<n;i++)
        {
            if(a[i] != b[i]){
                
                if(start == -1)//第一次不相等
                    start = i;
                    
                else{ //第二次不相等 
                    ans += (i - start);
                    start = -1;                
                }
            }
        }
        
        printf("%d",ans);
        return 0;
    }
    非学无以广才,非志无以成学。 正是因为今天的不完美,才对未来充满希望。 ----长帆
  • 相关阅读:
    Java中的并发库学习总结
    Android源码的git下载地址
    Android下载Android源码
    工具类 验证手机邮箱
    hibernate缓存说明
    Hibernate之N+1问题
    常用正则
    Java Base64加密、解密原理Java代码
    Base64加密解密原理以及代码实现(VC++)
    情书经典语录
  • 原文地址:https://www.cnblogs.com/changfan/p/10581214.html
Copyright © 2011-2022 走看看