MADE_Y

纸上得来终觉浅,绝知此事要躬行

NYOJ 915 +-字符串

+-字符串

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述
Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。
输入
多组测试数据

每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
输出
仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
样例输入
++-+--+ 
-++--++ 
样例输出
4
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 5000 + 10;
char str1[maxn], str2[maxn];
int main()
{
    while(scanf("%s%s", str1, str2) != EOF){
        int len = strlen(str1);
        int sum1 = 0, sum2 = 0;
        for (int i = 0; i < len; i++){
            if (str1[i] == '+')
                sum1++;
            if (str2[i] == '+')
                sum2++;
        }
        if (sum1 != sum2){
            printf("-1\n");
            continue;
        }
        int ans = 0;
        for (int i = 0; i < len; i++){
            if (str1[i] != str2[i]){
                for (int j = i + 1; j < len; j++){
                    ans++;
                    if (str1[j] == str2[i]){
                        str1[j] = str1[i];
                        break;
                    }
                }
            }
        }
        printf("%d\n", ans);
    }
    return 0;
}


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a2459956664/article/details/51555009
个人分类: OJ
上一篇NYOJ 891 找点
下一篇NYOJ 1036 非洲小孩
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭