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;
}

 

 

 

 

原文地址:https://www.cnblogs.com/scau20110726/p/2712614.html