PAT 1042

这题做的有点麻烦,因为脑子一直抽风,整体思路是直接开了个结构体存洗牌顺序,然后直接快排n次输出就好了,很简单的一道题目脑子卡住好几次.
#include <iostream>
#include <string>
#include <cstring>
#include<algorithm>
#include<cmath>
#include <vector>
#include <map>
#include <stdio.h>
using namespace std;
#define MAX 55
#define INF 0x3f3f3f3f
struct CARD {
	string card;
	int pos;
}c[55];
bool cmp(CARD a, CARD b) {
	return a.pos < b.pos;
}
int main() {
	int n,i,j,p[55];
	string card[MAX] = {"","S1","S2","S3","S4","S5","S6","S7","S8","S9","S10","S11","S12","S13","H1","H2","H3","H4","H5","H6","H7","H8","H9","H10"
		,"H11","H12","H13","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13","D1","D2","D3","D4","D5","D6","D7","D8","D9","D10"
		,"D11","D12","D13","J1","J2"};
	scanf("%d", &n);
	for (i = 1; i < 55; i++) {
		c[i].card = card[i];
	}

	for (i = 1; i < 55; i++) {
		scanf("%d", &p[i]);
	}
	for (i = 0; i < n; i++) {
		for (j = 1; j < 55; j++) {
			c[j].pos = p[j]; 
		}
		sort(c + 1, c + 55, cmp);
	}

	cout << c[1].card;
	for (i = 2; i < 55; i++) {
		cout << " " << c[i].card;
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值