ShellSort
大意:
给出N乌龟的名字,再给出这些名字的排序;
每次只能将一只乌龟放到最顶端,求最少的挪移个数;
要点:
第一个被动的乌龟肯定在所有被动的乌龟的最下方,所以从下往上找第一个被动过的乌龟;
代码:
#include <cstdio>
#include <cstring>
#include <string>
int main(){
int n;
scanf ("%d", &n);
getchar();
while (n--){
int num;
char turtle[205][85];
int sort[205];
scanf ("%d", &num);
getchar();
int t = 0;
while (t < num){
char c;
int m = 0;
while ((c = getchar()) && c != '\n')
turtle[t][m] = c, m++;
turtle[t][m] = '\0';
t++;
}
char temp[85];
t = 0;
while (t < num){
char c;
int m = 0;
while ((c = getchar()) && c != '\n')
temp[m] = c, m++;
temp[m] = '\0';
for(int i = 0; i < num; i++){
if(!strcmp(temp, turtle[i])){
sort[t] = i;
break;
}
}
t++;
}
int flag = 0;
for (int i = num - 1, j = num - 1; j >= 0; j--){
if (sort[i] == j)
i--;
else
flag++;
}
for (int i = flag - 1; i >= 0; i--)
printf ("%s\n", turtle[sort[i]]);
printf ("\n");
}
return 0;
}