AcWing1208はコインを裏返します

タイトル説明:

XiaoMingは「コイントス」ゲームをプレイしています。

テーブルの上に数枚のコインが並んでいます。*は表側を表し、oは裏側を表します(ゼロではなく小文字)。

たとえば、考えられる状況は次のとおりです。**oo***oooo

左側の2枚のコインを同時に裏返すと、次のようになります。oooo***oooo

Xiaomingの質問は、初期状態と到達する目標状態がわかっていて、同時に2つの隣接するコインしか裏返すことができない場合、少なくとも特定の状況で何回裏返す必要があるかということです。

私たちは同意します:2つの隣接するコインを裏返すことはワンステップ操作と呼ばれます。

入力フォーマット

同じ長さの2つの文字列は、それぞれ初期状態と到達するターゲット状態を表します。

出力フォーマット

操作ステップの最小数を表す整数

データ範囲

入力文字列の長さは100を超えません。
データは、答えが解決可能でなければならないことを保証します。

入力例1:

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

出力サンプル1:

5

入力例2:

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

出力サンプル2:

1

 

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

const int MAX = 109;

char a[MAX], b[MAX];

int main()
{
    scanf("%s %s", a, b);

    int l = strlen(a);

    int sum = 0;

    for(int i = 0; i < l; i++)
    {
        if(a[i] != b[i])
        {
            sum ++;
            if(a[i+1] == 'o')
                a[i+1] = '*';
            else
                a[i+1] = 'o';
        }
    }

    printf("%d\n", sum);


    return 0;
}

 

おすすめ

転載: blog.csdn.net/weixin_44620183/article/details/113251503