2016-08-19
UVA - 10152 ShellSort
题目大意:输入 n 串字符和目标顺序,每次可以选择一串字符置于最顶端,目的是将输入的字符串变为目标顺序,输出每次选择置于顶端的字符串。
解题思路:对比当前状态和目标状态,设置两个指针同时从底部向上扫,相同时同时向上 +1,否则当前状态 +1,当前状态扫完后将目标状态未扫到的倒序输出,即需要选择的字符串。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char str1[500][100];
char str2[500][100];
int main() {
int n;
scanf("%d", &n);
while (n--) {
int N;
scanf("%d", &N);
getchar();
for (int i = 1; i <= N; i++)
gets(str1[i]);
for (int i = 1; i <= N; i++)
gets(str2[i]);
int x = N, y = N;
while ( x > 0 ) {
if ( !strcmp(str1[x], str2[y]) )
y--;
x--;
}
while ( y > 0 )
printf("%s\n", str2[y--]);
cout << endl;
}
return 0;
}