标签:依次 std bsp for main 字符串 整数 ring other
题目描述:
Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题
++-+--+ -++--++
4
#include<stdio.h>
#include<string.h>
int main()
{
char a[5000],b[5000],ch;
while(gets(a)!=‘\0‘&&gets(b)!=‘\0‘)
{
int c,d,i,j,n=0,m=0,x=0;
c=strlen(a);
d=strlen(b);
if(c!=d)//判断二者长度是否相等 不相等输出-1 相等的话再看‘+‘(或者‘-‘)的个数是否相等
{
printf("-1\n");
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\n");
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",n);
}
return 0;
}
//AC
标签:依次 std bsp for main 字符串 整数 ring other
原文地址:http://www.cnblogs.com/hys1258414454/p/7257204.html