uva 10152 ShellSort

//非常好的算法,代码很短,20来行就可以,时间也不差0.060,但是考虑是否可以更快

//这个算法用到了“相对位置”的思想,并且就本题而言还有一个很重要的结论就是,假设

//移动了k个元素,那么这k个元素一定是最后结果的那个序列的前k个元素,而且易知,

//越先移动的元素一定会越被压在移动的元素的底部

 

#include <stdio.h>

#include <string.h>

char name[210][100],standard[210][100];



int main()

{

    int T,i,j,n;

    scanf("%d",&T);

    while(T--)

    {

        scanf("%d",&n);  getchar();

        for(i=1; i<=n; i++)  gets(name[i]);

        for(i=1; i<=n; i++)  gets(standard[i]);



        for(i=j=n; i>=1; i--) if( !strcmp(name[i] , standard[j]) ) j--;

        

        for(; j>=1; j--)  printf("%s\n",standard[j]);



        printf("\n");

    }

    return 0;

}

 

 

 

 

 

你可能感兴趣的:(shell)