习题 3-11 换抵挡装置

版权声明:本人菜鸟一只,如文章有错误或您有高见,请不吝赐教 https://blog.csdn.net/qq_41138935/article/details/82694563

总长度减去两数组的重合部分(连续小于4的部分) 取最小值

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAX=105;
char a[MAX];
char b[MAX];
int lena,lenb;

int f(char *arrA,char *arrB,int n){
	int sum=lena+lenb,Min=min(lena,lenb),len=sum;
	int i,j;
	for(i=0;i<n;i++){
		bool flag=true;
		int same=min(n-i,Min);
		for(j=0;j<same;j++){
			if(arrA[i+j]=='2'&&arrB[j]=='2'){
				flag=false;
				break;
			}
		}
		if(flag&&len>sum-same)
			 len=sum-same;
	}
	return len;
}
int main(){
	cin>>a;
	cin>>b;
	lena=strlen(a);
	lenb=strlen(b);
	cout<<min(f(a,b,lena),f(b,a,lenb));
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_41138935/article/details/82694563
今日推荐