zoukankan      html  css  js  c++  java
  • NYOJ 题目915 +-字符串

    题目描述:

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

    输入
    多组测试数据

    每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
    输出
    仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
    样例输入
    ++-+--+ 
    -++--++ 
    样例输出
    4

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    char a[5000],b[5000],ch;
    while(gets(a)!=''&&gets(b)!='')
    {
    int c,d,i,j,n=0,m=0,x=0;
    c=strlen(a);
    d=strlen(b);
    if(c!=d)//判断二者长度是否相等 不相等输出-1 相等的话再看'+'(或者'-')的个数是否相等
    {
    printf("-1 ");
    continue;
    }
    for(i=0;i<c;i++)
    if(a[i]=='+')m++;
    for(i=0;i<d;i++)
    if(b[i]=='+')x++;
    if(x!=m)//'+'(或者'-')的个数不相等,输出-1 相等的话开始计算经过几次能够完成变换
    {
    printf("-1 ");
    continue;
    }
    for(i=0;i<c;i++)
    {
    if(a[i]==b[i])//依次判断各个对应位置上字符是否一致
    continue;
    for(j=i;j<c-1;j++)
    {
    n++;
    if(a[i]==a[j+1])continue;
    else
    {
    ch=a[i];
    a[i]=a[j+1];
    a[j+1]=ch;
    break;
    }
    }
    }
    printf("%d ",n);
    }
    return 0;
    }

    //AC

  • 相关阅读:
    POJ10024873279
    javascript中转为二进制
    javascript画图库
    javascript返回多个参数
    单引号,双引号,javascript,HTML,转义字符
    onKeypress对中文无效
    javascript参数传址与传值
    关于JS中引用其它JS的问题
    JavaScript中可建立自己的库
    路由表详解
  • 原文地址:https://www.cnblogs.com/hys1258414454/p/7257204.html
Copyright © 2011-2022 走看看