标签:
++-+--+ -++--++
4
太水啊。这样也能通过。哈哈。
思路大致是这样的:
输出-1的这种情况:当两个字符串长度或者+号的个数不相等时,肯定不匹配,应输出-1;
非-1情况:记录两个字符串中+号的位置。匹配后,第一个字符串的第i个+号肯定和第二个字符串的第i个+号相匹配的。
那么只需把各个+号的位置差算出即可。这些差的和也就是最后结果。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int a[5000],b[5000]; 5 char s1[5000],s2[5000]; 6 int main(void){ 7 while(scanf("%s%s",s1,s2) != EOF){ 8 int len1 = strlen(s1),m = 0; 9 for(int i = 0; i < len1; i++){ 10 if(s1[i] == ‘+‘) 11 a[m++] = i; 12 } 13 int len2 = strlen(s2),n = 0; 14 for(int i = 0; i < len2; i++){ 15 if(s2[i] == ‘+‘) 16 b[n++] = i; 17 } 18 if(len1 != len2 || m != n){ 19 printf("-1\n"); 20 continue; 21 } 22 int result = 0; 23 for(int i = 0; i < n; i++){ 24 result += abs(a[i] - b[i]); 25 } 26 printf("%d\n",result); 27 } 28 return 0; 29 }
标签:
原文地址:http://www.cnblogs.com/yfs123456/p/5669168.html