题目大意:输入 n 串字符和目标顺序,每次可以选择一串字符置于最顶端,目的是将输入的字符串变为目标顺序,输出每次选择置于顶端的字符串。
解题思路:对比当前状态和目标状态,设置两个指针同时从底部向上扫,相同时同时向上 +1,否则当前状态 +1,当前状态扫完后将目标状态未扫到的倒序输出,即需要选择的字符串。
侵删。UVa 10152 - ShellSort by 小白菜又菜
这个博主处理的太好了,学习qwq。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctype.h>
using namespace std;
char tur[500][100];
char target[250][100];
int main() {
int K;
scanf("%d", &K);
while (K--) {
int n;
scanf("%d", &n);
getchar();
for (int i = 1; i <= n; i++)
gets(tur[i]);
for (int i = 1; i <= n; i++)
gets(target[i]);
int p = n, q = n;
while (p > 0) {
if (strcmp(tur[p], target[q]) == 0)
q--;
p--;
}
while (q > 0)
printf("%s\n", target[q--]);
printf("\n");
}
return 0;
}