PAT 1042

来源:互联网 发布:js amd cmd规范 编辑:程序博客网 时间:2024/05/16 17:04
这题做的有点麻烦,因为脑子一直抽风,整体思路是直接开了个结构体存洗牌顺序,然后直接快排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 0x3f3f3f3fstruct 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;}

0 0