牛牛手里有一个字符串A,羊羊的手里有一个字符串B,B的长度大于等于A,所以牛牛想把A串变得和B串一样长,这样羊羊就愿意和牛牛一起玩了。
而且A的长度增加到和B串一样长的时候,对应的每一位相等的越多,羊羊就越喜欢。比如"abc"和"abd"对应相等的位数为2,为前两位。
牛牛可以在A的开头或者结尾添加任意字符,使得长度和B一样。现在问牛牛对A串添加完字符之后,不相等的位数最少有多少位?
输入描述:
第一行为字符串A,第二行为字符串B,A的场地小于等于B的长度,B的长度小于等于50.字符均为小写字母。
输出描述:
输出一个整数表示A串添加完字符之后,不相等的位数最少有多少位?
输入例子:
abe cabc
输出例子:
1
1 #include <stdio.h> 2 #include<stdlib.h> 3 #include <string.h> 4 #define n 50 5 int max(int a, int b){ 6 if(a>=b) 7 return a; 8 else return b; 9 } 10 int main() 11 { 12 char a[n]; 13 char b[n]; 14 int asize=0;int bsize=0; 15 for(int i=0;a[i-1]!=' ';i++){ 16 scanf("%c",&a[i]); 17 asize++; 18 } 19 for(int i=0;b[i-1]!=' ';i++){ 20 scanf("%c",&b[i]); 21 bsize++; 22 } 23 while(asize!=0&&bsize!=0) 24 { 25 int equal = 0; 26 27 int result = 0; 28 29 int count = 0; 30 int n1 = asize-1; 31 int n2 = bsize-1; 32 33 if(n1 == n2) 34 { 35 for(int i=0;i<n1;i++) 36 { 37 if(a[i] != b[i]) 38 { 39 count++; 40 } 41 } 42 printf("%d",count); 43 break; 44 } 45 else//蛮力比较 46 { 47 for(int i=0;i<=n2-n1;i++) 48 { 49 int k = i; 50 for(int j=0;j<n1;j++) 51 { 52 53 if(b[k] == a[j]) 54 { 55 56 equal++; 57 } 58 k++; 59 } 60 result = max(result,equal);//有几位数相同 61 equal=0; 62 } 63 count = n2 - (result + (n2 - n1));//(n2-n1):可以补成相同的几位 (result + (n2 - n1):一共可以相同的有几位 64 printf("%d",count); 65 break; 66 67 68 } 69 } 70 }