B. Binary Path
由于只能向右和向下走,所以只能向下走一次只需要找到第一个右边是1下面是0的位置,往下移动即可,如图所示。
那么次数计算只需要计算在往下走这个结点向前有多少个上面和左边相同的组数即可
#include<iostream>
using namespace std;
int main(){
int T;cin>>T;
while(T--){
int n;cin>>n;
string s[2];
cin>>s[0]>>s[1];
int ansi=0;
string ans;
for(int i=0;i<n;i++){
ans+=s[0][i];
if(s[0][i+1]>s[1][i]||i==n-1){
ansi=i;break;
}
}
for(int i=ansi;i<n;i++) ans+=s[1][i];
int cnt=1;
for(int i=ansi;i>=0;i--){
cnt++;
if(s[1][i-1]!=s[0][i]) break;
}
cout<<ans<<'\n'<<cnt<<endl;
}
}