洗牌,共洗k次,每次将将原先的牌洗进输入好的位置。

步骤:

1 设置次数k,输入位置数列next[55],填充初始牌序start[55];

2 end[next[i]]=start[i]把新的牌序赋值给end数组,并将end数组重新赋值给start数组,共重复k次;

3 由于设置的花色数组mp[5]的序号是0-4,即用1-54/13后,结果对应相应的mp元素。因为n*13/13==1,需要将数组值全部-1,得到正确的mp序号。

在数组值全部-1后,start[i]%13的结果为0-12,需要start[i]%13+1来得到正确的结果1-13

注:由于1-13%13的结果是1,2,3…12,0,必须将数组的整体值-1后取余得到0,1,2…12后再+1才能得到正确结果。否则13的倍数牌将显示为0.

 #include<stdio.h>
int main(){
char mp[]={'S','H','C','D','J'};
int start[],end[],next[];
int k;
scanf("%d",&k);
for(int i=;i<=;i++){
scanf("%d",&next[i]);
start[i]=i;
}
for(int j=;j<k;j++){
for(int i=;i<=;i++){
end[next[i]]=start[i];
}
for(int i=;i<=;i++){
start[i]=end[i];
}
}
for(int i=;i<=;i++){
start[i]--;
printf("%c%d",mp[start[i]/],start[i]%+);
if(i!=) printf(" ");
}
return ;
}

最新文章

  1. HTML 定时页面跳转
  2. js事件冒泡和事件捕获
  3. PHP慕课网教程
  4. 操作无效:已关闭 Lob。 ERRORCODE=-4470, SQLSTATE=null
  5. js判断小数点几位
  6. EF简单的增删查改
  7. Handsontable 学习笔记-Methods
  8. 深入javascript——构造函数和原型对象
  9. shell -- yes or no
  10. 简单的ajax遮罩层(加载进度圈)cvi_busy_lib.js
  11. HI3531由DMA 发起PCIe 事务
  12. SSM-Spring-03:Spring中AOP的初窥和入门小案例
  13. web服务器案例
  14. OWASP安全编码规范快速参考指南
  15. mysql5.7.20:安装教程
  16. Oracle多关键字模糊查询
  17. 何时开始phonics学习及配套阅读训练zz
  18. [转载]RSA算法详解
  19. wpf中的触发器详解 (转自 乂乂的日志 - 网易博客)
  20. docker基础学习

热门文章

  1. case when then else end 累加
  2. laravel 多字段登录
  3. Android:adb shell 命令详解
  4. 2d平台怪物逻辑
  5. 【Linux开发】直接渲染管理
  6. java基础/java调用shell命令和脚本
  7. 命令行模式和Python交互模式的区别
  8. 腾讯云从零搭建PHP运行环境
  9. redis 教程(一)-基础知识
  10. Bootstrap table 实现树形表格,实现联动选中,联动取消