现在的位置: 首页 > 综合 > 正文

(字符串的映射与匹配7.3.13)UVA 10152 ShellSort(将初始序列转化成目标序列所需的最少次数,前提条件是:每一个元素只能移动栈顶)

2013年12月11日 ⁄ 综合 ⁄ 共 537字 ⁄ 字号 评论关闭
/*
 * UVA_10152_1.cpp
 *
 *  Created on: 2013年11月4日
 *      Author: Administrator
 */


#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>

using namespace std;

const int maxn = 210;

string org[maxn];
string des[maxn];

int main(){
	int t;
	scanf("%d",&t);

	while(t--){
		int n;
		scanf("%d",&n);

		cin.ignore();//忽略n之后的\n
		int i;
		for(i = 0 ; i < n ; ++i){
			getline(cin,org[i]);
		}

		for(i = 0 ; i < n ; ++i){
			getline(cin,des[i]);
		}

		/**
		 * 由下到上对初始化序列和目标序列进行匹配,
		 * 如果能匹配则i、j同时减一
		 * 否则,只是i减一
		 */
		int j;
		i = j = n-1;
		while(i >= 0){
			if(org[i] == des[j]){
				--j;
			}
			--i;
		}

		while(j >= 0){//输出目标序列中还没有匹配的序列
			cout<< des[j--]<<endl;
		}

		cout<<endl;
	}

	return 0;
}

抱歉!评论已关闭.