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;
    }
    非学无以广才,非志无以成学。 正是因为今天的不完美,才对未来充满希望。 ----长帆
  • 相关阅读:
    项目编译
    sqlserver查列名
    list<>初始化赋值两种方式
    看到一句很不错的话
    typescript
    vscode里div等html标签代码补全
    JavaScript 基于原型链的继承
    大数据系列01:大数据离线计算平台hadoop集群搭建和本地环境配置实践
    java数据类型
    计算机基础及java基础
  • 原文地址:https://www.cnblogs.com/changfan/p/10581214.html
Copyright © 2011-2022 走看看