标签:
思路:
这道题和杭电的蚂蚁那道题可一样,因为这里面的加号(或者减号)都是一模一样的,所以当我们移动的时候,相同的符号可以相互穿越!首先先找到对应的位置上的字符不同的位置然后再将数组a向后面找与数组b中该位置上的字符相同的字符(在找的过程中要将找的步数加到min上)也就是需要交换的次数,然后只要找到有相同的就停止,交换就此结束,然后再继续往后遍历,直到遍历的所有对应位置上的字符都相等为止!
代码:
#include <stdio.h>
#include <string.h>
char a[5005],b[5005];
int main()
{
while(scanf("%s%s",a,b)!=EOF)
{
int len1=strlen(a);
int len2=strlen(b);
int cnt1=0,cnt2=0;
for(int i=0;i<len1;i++)
{
if(a[i]=='+')
cnt1++;
}
for(int j=0;j<len2;j++)
{
if(b[j]=='+')
{
cnt2++;
}
}
if(len1!=len2||cnt1!=cnt2)
{
printf("-1\n");
continue;
}
int min=0;
for(int i=0;i<len1;i++)
{
if(a[i]!=b[i])//找不相等的字符
{
for(int j=i+1;j<len2;j++)
{
min++;//保存交换的次数
if(b[i]==a[j])//找与b数组该位置上的数相等的值
{
a[i]=a[j];
break;//停止交换
}
}
}
}
printf("%d\n",min);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/dxx_111/article/details/48146111