求调15分
查看原帖
求调15分
1011794
gaogao05楼主2024/12/20 21:43
#include<bits/stdc++.h>
using namespace std;
int t,n,ans;
string s1,s2,t1,t2;
char c; 
int main(){
	cin>>t;
	for(int abcd=0;abcd<t;abcd++){
		ans=0;
		cin>>n>>s1>>s2>>t1>>t2;
		for(int i=0;i<n;i++){
			if(t1[i]=='0'){//分类讨论,当此位不能交换时,使用s2中的位匹配s1 
				if(t2[i]!='0'){
					for(int j=i+1;j<n;j++){
						if(t2[j]=='0'){//当这一位无法交换时,后面的位自然无法交换 
							break;
						}
						if(s2[j]==s1[i]){
							swap(s2[j],s2[i]);
							break;
						}	
					}
				}
			}
			for(int j=i+1;j<n;j++){//可以交换时,匹配s2中对应位 
				if(t1[j]=='0'){
					break;
				}
				if(s1[j]==s2[i]){
					swap(s1[j],s1[i]);
					break;
				}
			}
		}
		for(int i=0;i<n;i++){
			if(s1[i]==s2[i]){
				ans++;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

2024/12/20 21:43
加载中...