【1042】Shuffling Machine (20 分)
【摘要】
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm> #include<map>#inclu...
-
#include<iostream>
-
#include<stdio.h>
-
#include<stdlib.h>
-
#include<math.h>
-
#include<string.h>
-
#include<algorithm>
-
#include<map>
-
#include<vector>
-
#include<queue>
-
using namespace std;
-
//start[]和end[]分别存放执行操作前和后的牌序,循环K次
-
//每次循环后用end[]覆盖start[]给下一次操作使用,start[]存放最终牌序
-
-
const int N=54;
-
char mp[5]={'S','H','C','D','J'}; //牌的编号与花色的对应关系
-
//int start[N],end[N];
-
//int next[N]; //next数组存放每个位置上的牌在操作后的位置
-
int Start[N], End[N], Next[N];
-
-
int main(){
-
int K;
-
scanf("%d",&K); //洗K次牌
-
for(int i=1;i<=N;i++){
-
Start[i]=i; //初始化牌的编号
-
}
-
for(int i=1;i<=N;i++){
-
scanf( "%d", &Next[i] ); //输出每个位置的牌在操作后的位置
-
}
-
for(int step=0;step <K;step++){ //执行K次操作
-
for(int i=1;i<=N;i++){
-
End[ Next[i] ] = Start[i]; //把第i个位置的牌的编号存于位置next[i]
-
}
-
for(int i=1;i<=N;i++){
-
Start[i]=End[i]; //把end数组赋值给start数组以供下次操作使用
-
}
-
}
-
for(int i=1;i<=N;i++){
-
if(i != 1) printf(" "); //控制输出格式
-
Start[i]--;
-
printf("%c%d",mp[Start[i]/13] , Start[i]%13+1); //输出结果
-
}
-
system("pause");
-
return 0;
-
}
文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。
原文链接:andyguo.blog.csdn.net/article/details/100020798
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)