ShellSort

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值