本题名为“shellsort”,但是注意不是希尔排序,而是“龟壳排序”, 无语。。。。。。。
这题虽然比较水,但我还是纠结了很长时间的说,不过思路理顺了就好。题目中给出了处理前和处理后的两个字符串序列,我们着重看处理后的,处理后字符串序列一定可以分为两个部分,上面一部分一定是被“处理”的“turtle”,下面是没被“处理”的,只需找出分界线即可。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct{
char name[81];
}name_set;
int main()
{
name_set a[201], b[201], c[201];
int test_case;
int total, i, j, k;
scanf("%d", &test_case);
while(test_case--)
{
scanf("%d", &total);
getchar();
for(i=0; i<total; ++i)
{
gets(a[i].name);
}
for(i=0; i<total; ++i)
{
gets(b[i].name);
}
i = j = k = total-1;
while(i>=0 && j>=0)
{
if(!strcmp(a[i].name, b[j].name))
{
i--;
j--;
}
else
{
i--;
}
}
while(j>=0)
puts(b[j--].name);
printf("\n");
}
return 0;
}
关于希尔排序,给出维基百科上的链接,虽然本题没有明显的体现出。。。。。。