以为当前行只与上一行有关
所以用滚动数组优化写的
代码如下:
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
char str[10][15];
bool judge(int k, int len) {
for(int i=0; i<=len; ++i)
if(str[k][i] != str[1-k][i])
return false;
return true;
}
int main(void) {
int i = 0;
int len = -1;
while(scanf("%s", str[i]) != EOF) {
if(len == -1) {
printf("%s\n", str[i]);
} else {
int tmp = strlen(str[i])-1;
len = min(len, tmp);
while(len>=0 && !judge(i, len)) {
--len;
}
if(len >= 0) {
for(int j=0; j<=len; ++j)
printf(" ");
printf("%s\n", str[i]);
} else {
printf("%s\n", str[i]);
}
}
++len;
i = 1-i;
}
return 0;
}