题目地址:K - Kickdown
题意:好多种理解 其实题目本身是一种齿轮类的东西 然后要拼接的刚刚好求最短长度 其实我觉得另一种方法更方便理解 我是把两次输入当成两张纸条 有凹有凸(高度1或2) 接下来工作比较简单 一次录入两组数组 全是1或2 然后不断循环并适时跳出循环便好 中间出了点错 循环从第一位开始 忘记考虑短条在前的情况(WA的是把短条往后挪 没有检测长条往后移) 导致考虑不全面
代码如下:
#include
#include
#include
using namespace std;
int main()
{ char sh[101],lo[101],t[101];
int A,B,i,j,ma,mi,siz;
while(cin>>sh>>lo)
{
A=strlen(sh);
B=strlen(lo);
ma=max(A,B);
mi=min(A,B);//记录长、短字符串长度
if(ma==A){//分配sh——短字符串 lo——长字符串
strcpy(t,sh);
strcpy(sh,lo);
strcpy(lo,t);
}
for(i=0;i
('1'+'2'))//依次对比每处能否装进盒子 不能则跳出并后移一位
{
break;
}
}
if(j==mi||j+i==ma)
{
break;
}
}
siz=A+B-j;
for(i=0;i
('1'+'2')) { break; } } if(j==mi-i) break; } if(A+B-j