1262: +-字符串X
时间限制: 1 Sec 内存限制: 128 MB
提交: 45 解决: 23
您该题的状态:已完成
[提交][状态][讨论版]
题目描述
Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。
输入
多组测试数据
每组数据有两行,每行包含一个由”+”和”-“最成的字符串。每个子符串长度不超过5000。
输出
仅一个整数,输出最少需要操作的次数。如果答案不存在,输出-1。
样例输入
++-+--+
-++--++
样例输出
4
提示
来源
我能说网上别人的代码好多是错的吗?真服了,这题真的是恶心人,错了好多遍,终于写出来了,大快人心
#include<stdio.h>
#include<string.h>
int main() {
char a[10001],b[10001];
while(scanf("%s %s",a,b)!=EOF) {
int len=strlen(a);
int i,j;
int q=0;
char c;
int p=0;
for(i=0; i<len; i++) {
if(a[i]!=b[i]) {
for(j=i+1; j<len; j++) {
if(a[j]==b[i]) {
while(j>i) {
q++;
c=a[j-1];
a[j-1]=a[j];
a[j]=c;
j--;
}
break;
}
}
}
}
if(strcmp(a,b)==0) {
printf("%d\n",q);
} else {
printf("-1\n");
}
}
return 0;
}