NYOJ 915 +-字符串

来源:互联网 发布:连邦软件专卖店 编辑:程序博客网 时间:2024/06/11 17:15

+-字符串

时间限制:1000 ms | 内存限制:65535 KB

难度:1

描述

Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。

输入

多组测试数据

每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。

输出

仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。

样例输入

++-+–+
-++–++

样例输出

4
**部分编译器abs()放在 cstdlib头文件里
每次只往后移动一个位置 两个字符串里的’+”-‘要一一对应
只有一种方式
故移动步数就等于两个字符串里每个’+’或‘- ’对应的下标差之和**

#include<cstdio>#include<cstdlib>#include<string.h>#include<iostream>using namespace std;int main(){    char a[10005],b[10005];    int c[10005],d[10005];    while(gets(a))    {        gets(b);int k = 0,l = 0;        for(int i=0;i < strlen(a) ; i ++)        {            if(a[i] == '+' )            c[k ++] = i;            if(b[i] == '+' )            d[l ++] = i;        }        int count = 0;        if(k != l)        cout<< "-1" << endl;        else        {            for(int i = 0 ;i < k;i ++)            {                count = count + abs(c[i] - d[i]) ;            }            cout<<count<<endl;        }    } }