同样没写重复多次输入的那层循环。
#include <iostream> #include <vector> #include <string> #include <string.h> #include <stdio.h> #include <algorithm> #define maxn 100010 using namespace std; int main() { string A,B; cin>>A>>B; A.push_back('0');//短数组最终移动出长数组才满足条件的情况,如果不加这个0按程序短数组的第一位要与越界的东西相加了……但是最后注意算最终结果要去掉这个位//这个写法不是很好,应该加判断会更好 int lenA=A.length(); int lenB=B.length(); for(int i=0;i<lenA;i++)//从A的0个元素开始一个个尝试 { bool available=1; for(int j=0;j<min(lenB,lenA-i);j++)//在短数组还仍然与长数组重合时要满足相加小于三 if(A[i+j]+B[j]-'0'-'0'>3) { available=0; break; } if(available==1) { cout<<max(lenA-1,i+lenB);//可以完全重合时输出lenA,不能的时候输出i+lenB break; } } }
2494

被折叠的 条评论
为什么被折叠?



