1813: 完美洗牌术

#include <bits/stdc++.h>
using namespace std;
int xh[52],b[52],a[100][52],n,x;
string s[10]={"Clubs","Diamonds","Hearts","Spades"},
ds[20]={"Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"};
void xp(int x){
    for(int i=1;i<=52;i++){
        b[i]=xh[a[x][i]];
    }
    for(int i=1;i<=52;i++){
        xh[i]=b[i];
    }
}
int main(){
    for(int i=1;i<=52;i++) xh[i]=i;
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=52;j++){
            cin>>a[i][j];
        }
    }
    while(cin>>x){
        xp(x);
    }
    for(int i=1;i<=52;i++){
        if(b[i]<=13) cout<<ds[b[i]%13]<<" of "<<s[0]<<"\n";
        else if(b[i]<=26) cout<<ds[b[i]%13]<<" of "<<s[1]<<"\n";
        else if(b[i]<=39) cout<<ds[b[i]%13]<<" of "<<s[2]<<"\n";
        else cout<<ds[b[i]%13]<<" of "<<s[3]<<"\n";
          
    }
      
    return 0;
}

题目描述

在一个大城市中有很多赌场。在其中一个赌场中,发牌员会作弊。她拥有若干种完美洗牌方法,每种方法都能保证洗牌后所有牌按照一种预先设计好的顺序排列。 例如,“底牌”洗牌法就是将最下面的牌移到最上面。当把各种洗牌法组合起来时,这位发牌员几乎能将一副牌洗成她想要的任何一种顺序。

现有一份发牌员的洗牌法清单以及能分辨出任何情况下她所使用的洗牌法的视觉线索。本题的要求是预测洗牌后的各张扑克牌的排列顺序。

一副标准的牌包括52张牌,分13种点数和4种花色。点数用2、3、4、5、6、7、8、9、10、Jack、Queen、King、Ace表示; 花色用Clubs、Diamonds,Hearts、Spades 表示。每张牌都可通过点数和花色唯一确定,用<value> of <suit>表示。例如9 of Hearts"或者"King of Spades"。在本题中,一副新的纸牌先按花色的首字母,然后按点数从小到大排列。

输入

第1行包含1个正整数n≤100代表发牌员所掌握的洗牌法数目。

接下来有n组整数,每组都是1-52的某种排列。在该排列中,整数i在位置j表示洗牌前的第i张牌在洗牌后位于第j张。

接下来有若干行,每一行都是一个1~n之间的整数k,表示发牌员使用了第k种洗牌法。

输出

输出洗解完成后整副牌的排列方式,格式参见输出样例,严格字符串匹配。

样例输入

2
2 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 52 51
52 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 1

1

2
样例输出

King of Spades
2 of Clubs
4 of Clubs
5 of Clubs
6 of Clubs
7 of Clubs
8 of Clubs
9 of Clubs
10 of Clubs
Jack of Clubs
Queen of Clubs
King of Clubs
Ace of Clubs
2 of Diamonds
3 of Diamonds
4 of Diamonds
5 of Diamonds
6 of Diamonds
7 of Diamonds
8 of Diamonds
9 of Diamonds
10 of Diamonds
Jack of Diamonds
Queen of Diamonds
King of Diamonds
Ace of Diamonds
2 of Hearts
3 of Hearts
4 of Hearts
5 of Hearts
6 of Hearts
7 of Hearts
8 of Hearts
9 of Hearts
10 of Hearts
Jack of Hearts
Queen of Hearts
King of Hearts
Ace of Hearts
2 of Spades
3 of Spades
4 of Spades
5 of Spades
6 of Spades
7 of Spades
8 of Spades
9 of Spades
10 of Spades
Jack of Spades
Queen of Spades
Ace of Spades
3 of Clubs

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值