XYNUOJ +-字符串 酒馆浪人的博客

来源:互联网 发布:网络实训室建设方案 编辑:程序博客网 时间:2024/04/28 23:15

1262: +-字符串

时间限制: 1 Sec  内存限制: 128 MB
提交: 3  解决: 3
[提交][状态][讨论版]

题目描述


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

输入

多组测试数据

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

输出

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

样例输入

++-+--+ 
-++--++

样例输出

4

附上自己的代码,已AC

01.#include<stdio.h>
02.#include<string.h>
03.int main()
04.{
05.char str1[5005],str2[5000];
06.int t,len,sum,i,j,l,k;
07.while(scanf("%s%s",str1,str2)!=EOF)
08.{
09.k=l=0;
10.len = strlen(str1);
11.for( i = 0 ; i < len ; i++ )
12.{
13.if( str1[i] == '+' )
14.k++ ;
15.if( str2[i] == '+' )
16.l++ ;
17.}
18.if( k != l )
19.{
20.printf("-1\n");
21.continue;
22.}
23.sum=0;
24.for(i=0;i<len;i++)
25.{
26.if(str1[i]!=str2[i])
27.{
28.j=i+1;
29.while(str1[i]==str1[j]&&j<len)
30.j++;
31.t=str1[i];
32.str1[i]=str1[j];
33.str1[j]=t;
34.sum+=j-i;
35.}
36.}
37.printf("%d\n",sum);
38.}
39.return 0;
40.}