当前位置: 首页 > news >正文

PAT A1042. 洗牌机器

题目描述

有54张牌,编号为1~54,初始按编号从小到大排列。另外,这些牌按初始排列给定花色,即从左至右分别为13张S、13张H、13张C、13张D、2张J,如下所示:
s1, S2,…., S13,H1, H2,…, H13,C1, C2,.…, C13,D1, D2,…, D13,J1, J2
接下来执行一种操作,这种操作将牌的位置改变为指定位置。例如有5张牌S3, H5, C1,D13,J2,然后给定操作序列{4,2,5,3,1},因此把S3放到4号位、把H5放到2号位、C1放到5号位、D13放到3号位、J2放到1号位,于是就变成了J2,H5, D13, S3,C1。
现在需要将这种操作执行K次,求最后的排列结果。例如上面的例子中,如果执行第二次操作,那么序列J2, H5, D13,S3,C1就会变成C1,H5,S3,J2,D13。
 

输入样例

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


输出样例


S7 C11 C10 C12 S1 H7 H8 H9 D8 D9 S11 S12 S13 D10 D11 D12 S3 S4 S6 S10 HI H C13 D2 D3 D4 H6 H3 D13 J1 J2 CI C2 C3 C4 DI S5 H5 HI1 H12 C6 C7 C8 C9 S2 S8 S9 H1O D5 D6 D7 H4 H13 C5

学习收获

        ①将处理后的数组再一次赋值给原先的数组,这样可以复用数组。

        ②输出数组时,要想最后没有空格,可以先输出空格:除了第一个元素前面不输出空格,其余元素前面输出空格。

        ③ 一般来讲,题目中有大量数字,并且题目输出的数字是有规律时,需要找到数字间的规律。例如,这里找花色的规律:假设牌号为x,花色数组为mp[]={‘S’,‘H’,‘C’,‘D’,‘J’},则对应关系为mp[(x-1)/13]。花色下的编号为:(x-1)%13 +1。

代码实现 

#include<cstdio>

const int N = 54;
int main()
{
	
	int start[N+1],end[N+1],next[N+1];
	char mp[5]={'S','H','C','D','J'};//牌的编号与花色的对应关系 
	int K;
	scanf("%d",&K);
	
	for(int i=1;i<N+1;i++)
		scanf("%d",&next[i]);
		
	for(int i=1;i<N+1;i++)  //初始化:牌 
		start[i] = i;
	
	for(int j=0;j<K;j++)  //按照next顺序排序K次 
	{
		for(int i=1;i<N+1;i++)
		{
			end[next[i]] = start[i];
		}
		
		for(int i=1;i<N+1;i++)  //将end赋值给start,为下一次排序做准备 
		{
			start[i] = end[i];
		}
	}
	
	for(int i=1;i<N+1;i++)
	{
		if(i!=1)     //输出数组元素时,这样处理,最后没有空格 
			printf(" ");
		start[i]--;
		printf("%c%d",mp[start[i]/13],start[i]%13+1);  //编号与花色以及所属花色编号的转换 
	}
	
	return 0;	
} 

相关文章:

  • 数据库完整性基本概念及MySql语法
  • MYSQL数据库安装
  • SpringBoot整合SpringDataRedis
  • 使用Jetpack Compose和DummyJSON加速你的Android开发
  • Python Virtualenv:创建独立的 Python 开发环境
  • 天地图 uniapp使用笔记
  • dbForge Studioor MySQL v6 解锁版 安装教程(MYSQL数据库客户端)
  • ubuntu换镜像源方法
  • 课程设计---哈夫曼树的编码与解码(Java详解)
  • Stable diffusion 3 正式开源
  • 嵌入式硬件VS软件,到底哪个更难?
  • 详解 HBase 的安装部署及命令行操作
  • C语言从头学22——main( )函数
  • VMR,支持30+种编程语言的SDK版本管理器,支持Windows/MacOS/Linux。
  • 嵌入式开发十八:USART串口通信实验
  • 22种常用设计模式示例代码
  • Building wheels for collected packages: mmcv, mmcv-full 卡住
  • Mamaba3--RNN、状态方程、勒让德多项式
  • Vue CLI,Vue Router,Vuex
  • 如何配置node.js环境
  • 构建菌株有效降解有机污染物,上海交大科研成果登上《自然》
  • 中国词学研究会原会长、华东师大教授马兴荣逝世,享年101岁
  • 最快3天开通一条定制公交线路!上海推出服务平台更快响应市民需求
  • 经彩申城!上海网络大V沙龙活动走进闵行
  • 印方称若巴方决定升级局势,印方已做好反击准备
  • 巴国家安全委员会授权军方自主决定对印反击措施