这道题固定一块板,然后另一块板分别左移和右移,找出对应的最小值就好了
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
string s1, s2, s3;
int length1, length2;
while(cin >> s1 >> s2){
s3 = s1;
for (int i = 0; i < min(s1.length(), s2.length()); i++) { // 第一块板右移
if (s1[i] + s2[i] - 96 <= 3)
continue;
else {
s1 = '0' + s1;
i = 0;
length1 = max(s1.length(), s2.length());
}
}
length1 = max(s1.length(), s2.length());
s1 = s3;
for (int i = 0; i < min(s1.length(), s2.length()); i++) { // 第二块板右移,根据相对运动,即第一块板向左移动
if (s1[i] + s2[i] - 96 <= 3)
continue;
else {
s2 = '0' + s2;
i = 0;
length2 = max(s1.length(), s2.length());
}
}
length2 = max(s1.length(), s2.length());
cout << min(length1, length2) << endl;
}
return 0;
}