大挪耗

c++翻转

问题描述
小蓝用黑白棋的n个棋子排成了一行,他在脑海里想象出了一个长度为n的01串T,他发现如果把黑棋当做1,白棋当做0,这一行棋子也是一个长度为的01
串S。
小蓝决定,如果在S中发现一个棋子和它两边的棋子都不一样,就可以将其翻转变成另一个颜色。也就是说,如果S中存在子串101或者010,就可以选择将其分别变为111和000,这样的操作可以无限重复。小蓝想知道最少翻转多少次可以把S变成和T一模一样。
输入格式
输入包含多组数据。
输入的第一行包含一个正整数D表示数据组数。后面2D行每行包含一个01串,每两行为一组数据第2i-1行为第讠组数据的,第2i行为第讠组数据的SS,和T长度均为n。

输出格式
对于每组数据,输出一行包含一个整数,表示答案,如果答案不存在请输出-1。
样例输入
2
1000111
1010101
0100
1100
样例输出
2
-1

代码

#include <iostream>
using namespace std;
int main()
{
    int num,czcs;
    cin>>num;
    int result[num];
    string a,b;
    for (int i = 0; i < num; i++) {
        cin>>a;
        cin>>b;
        czcs=0;
        for (int j = 0; j <a.length() ; j++)
        {

            if (a[j]==b[j]);
            else
            {
                if (j==0 && j==a.length()-1)
                {
                    if (a[j-1]==b[j-1] && a[j+1]==b[j+1] && a[j-1]==a[j+1])
                    {czcs++;
                    }
                    else
                    {czcs=-1;
                        break;}
                }
                else
                {czcs=-1;
                    break;
                }

            }

        }
        result[i]=czcs;

    }
    for (int i = 0; i < num; i++) {
        printf("%d\n",result[i]);
    }
    return 0;
}


已发布

分类

可以收藏大挪耗一下。下载麻烦点城通网盘,站长保证下载速度,不会限速的,放心点就是了;分卷,安卓下载为txt:程序下载为url,不会下载参考不会下载。如果你想让本站活的久一点,请直接捐助

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注