+-字符串
时间限制:1000 ms | 内存限制:65535 KB
难度:1
- 描写叙述
- Shiva得到了两个仅仅有加号和减号的字符串,字串长度同样。Shiva一次能够把一个加号和它相邻的减号交换。他想知道最少须要多少次操作才干把第一个字符串变换成第二个字符串。
你如今要去帮助他完毕那个这个问题。
- 输入
- 多组測试数据
每组数据有两行。每行包括一个由”+”和”-“最成的字符串。每一个子符串长度不超过5000。 - 输出
- 仅一个整数,输出最少须要操作的次数。假设答案不存在,输出-1。
- 例子输入
++-+--+
-++--++- 例子输出
4
- 来源
- NBOJ
#include<stdio.h>
#include<string.h>
char ch1[5005],ch2[5005];
int visit[5005];
int main()
{
int i,j,count,sum,len;
while(~scanf("%s%s",ch1,ch2))
{
memset(visit,0,sizeof(visit));
sum=0;
for(i=0;ch2[i];i++)
{
count=0;
for(j=0;ch1[j];j++)
{
if(!visit[j])
{
if(ch1[j]!=ch2[i])
{
count++;
}
else
{
visit[j]=1;
break;
}
}
}
sum+=count;
}
len=strlen(ch1);
for(i=0;i<len;i++)
{
if(!visit[i])
{
printf("-1\n");
break;
}
}
if(i>=len)
printf("%d\n",sum);
}
return 0;
}