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