码迷,mamicode.com
首页 > 系统相关 > 详细

PAT甲题题解-1042. Shuffling Machine (20)-模拟

时间:2017-04-30 14:05:24      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:start   简单   scan   nbsp   img   return   opened   span   规则   

博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~
http://www.cnblogs.com/chenxiwenruo/p/6789205.html
特别不喜欢那些随便转载别人的原创文章又不给出链接的
所以不准偷偷复制博主的博客噢~

 

给出洗牌次数,以及洗牌的序列规则
第i个数shuffles[i]表示要将第i张牌移到第shuffles[i]个

很简单,就是
shuffle_seq[shuffles[i]]=start_seq[i];

技术分享
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string.h>
using namespace std;
int start_seq[55]; //洗牌前的序列
int shuffle_seq[55]; //洗牌后的序列
int shuffles[55]; //洗牌规则
string card[55];
int main()
{
    int k;
    int n=54;
    char str[5];
    string s;
    scanf("%d",&k);
    for(int i=1;i<=13;i++){
        //itoa(i,str,10);//会导致编译错误,在部分编译器上没法使用
        sprintf(str,"%d",i);
        s=str;
        card[i]="S"+s;
    }
    for(int i=14;i<=26;i++){
        sprintf(str,"%d",i-13);
        s=str;
        card[i]="H"+s;
    }
    for(int i=27;i<=39;i++){
        sprintf(str,"%d",i-26);
        s=str;
        card[i]="C"+s;
    }
    for(int i=40;i<=52;i++){
        sprintf(str,"%d",i-39);
        s=str;
        card[i]="D"+s;
    }
    card[53]="J1";
    card[54]="J2";

    for(int i=1;i<=n;i++){
        scanf("%d",&shuffles[i]);
        start_seq[i]=i;
    }
    for(int i=1;i<=k;i++){
        for(int j=1;j<=n;j++){
            shuffle_seq[shuffles[j]]=start_seq[j];
        }
        for(int j=1;j<=n;j++){
            start_seq[j]=shuffle_seq[j];
        }
    }
    cout<<card[start_seq[1]];
    for(int i=2;i<=n;i++){
        cout<<" "<<card[start_seq[i]];
    }
    printf("\n");
    return 0;
}
View Code

 

PAT甲题题解-1042. Shuffling Machine (20)-模拟

标签:start   简单   scan   nbsp   img   return   opened   span   规则   

原文地址:http://www.cnblogs.com/chenxiwenruo/p/6789205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!