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

魔法方阵(CSP-J模拟赛)

【问题描述】

一个魔法方阵由3×33×3的方格组成,其中每个格子里面有一个1−91−9的数字,并且每个1−91−9的数字在格子中都出现了恰好一次。在这个3×33×3的方格中有四个小的2×22×2的方格,分别位于整个3×33×3的方格的左上,右上,左下和右下,并按照顺序标号为1,2,3,41,2,3,4。这些2×22×2的方格可以被旋转,我们使用2×22×2的方格的编号以及一个大写字母CC或者RR来表示这次旋转。如果旋转的方向是顺时针,我们用CC来表示,否则我们用RR来表示。

现在,给定魔法方阵的初始状态以及一系列操作,你需要输出魔法方阵的最终状态。

【输入格式】

第一行输入一个正整数nn,表示操作的数量。 接下来33行,每行一个长度为33的只包含数字的字符串,表示魔法方阵的初始状态。其中第i(1≤i≤3)i(1≤i≤3)行的第j(1≤j≤3)j(1≤j≤3)个数字表示在魔法方阵初始时位于第ii行第jj列的数字。

接下来nn行,每行包含一个长度为22的由一个1−41−4的数字和一个大写字母CC或RR的字符串,表示一次操作。

【输出格式】

输出33行,每行包含一个长度为33的只包含数字的字符串,表示魔法方阵的最终状态。

【样例1】

input

1
123
456
789
1C

output

413
526
789

【样例2】

input

2
123
456
789
1C
4R

output

413
569
728

【数据范围】

对于100%的数据,1≤n≤1001≤n≤100.

  这道题呢,我们需要手动画,不然光想的话是不会想出来的。

  根据题意,我们知道,分为1,2,3,4四个区域,我想,可不可以用一个函数来判断t号区域的数字的下标是什么。

                                                        123

                                                        456

                                                        789

  加粗的是一号区域,我们发现,加粗数字的下标是t,t+1,t+3,t+4,我们来验证一下这个规律。

                                                        123

                                                        456

                                                        789

  加粗的数二号区域,t=2,2,3,5,6(下标),竟然是这个规律。

  嘿嘿嘿,其实错了,这个规律在3号区域和4号区域就无法用了,但是我们知道,只要t=该区域左上角数字的下标,那么这个规律就适用,所以,我们可以将区域3和区域4进行一次特判。

  OK,这个函数找到了,1~4号区域的下标,接下来该进行旋转了,如果是顺时针旋转的话,将有一下几个操作(根据样例1)

                                                        12

                                                        45

  样例1操作的是在一号区域顺时针旋转,经过我的笔画,顺时针的旋转有3次操作:

                                                        12

                                                        45

  将4和5交换。

                                                        12

                                                        54

  将2和4交换。

                                                        14

                                                        52

  最后将1和4交换。

                                                        41

                                                        52

  这样就实现了顺时针交换,但是在函数里怎么实现呢。我们之前已经找到了这每个区域4个数字的下标,我们将上面的数字交换看成下标交换也行啊。

  知道了顺时针交换,就该运算逆时针交换,因为两者刚好是相反的,所以将顺时针的操作反着来就是逆时针旋转就行了。

魔法方阵:

#include<bits/stdc++.h>
using namespace std;
char a[100];
void Operation(int t,char b){
	if(t==3) t=4;
	else if(t==4) t=5;
	if(b=='C'){
		swap(a[t+3],a[t+4]);
		swap(a[t+1],a[t+4]);
		swap(a[t],a[t+1]);
	}
	else{
		swap(a[t],a[t+1]);
		swap(a[t+1],a[t+4]);
		swap(a[t+3],a[t+4]);
	}
}
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=9;i++)
	  cin>>a[i];
	while(n--){
		int t;
		char b;
		cin>>t>>b;
		Operation(t,b);
	}
	for(int i=1;i<=9;i++){
		cout<<a[i];
		if(i%3==0)
		  cout<<endl;			
	}
}

  这里给大家介绍一下STL库里面的函数:swap函数,这个函数的主要作用就是交换两个数字(字符串,编码……都可以) 

  今天的普及组初赛模拟就讲到这里了,其他的改天再讲!

 

相关文章:

  • 线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段
  • 【axios】二次封装——避免重复发送请求
  • 没有那么难,基于 Echarts + Python Flask 动态实时大屏轻松可以实现
  • 【每日一算法】高精度算法 | 加法 | 减法_模板应用
  • 2022华为杯A题第一问详细思路
  • Qt5.14.2开发Mqtt应用程序
  • 【U3D小游戏】愤怒的小鸟(三)猪的相关
  • 【UEFI实战】LinuxBoot
  • Linux: kernel: 调试:DYNAMIC_DEBUG
  • 开发一个Canvas小游戏 实现一个游戏“引擎”
  • Java Spring MVC框架 II
  • Python注释、Python风格规范
  • 算法面试题——给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。
  • 以码为梦,心向远方,路在脚下|211应届计算机毕业生的迷茫
  • 《SpringBoot篇》16.SpringBoot整合Elasticsearch超详细教程
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • docker python 配置
  • java中具有继承关系的类及其对象初始化顺序
  • JS 面试题总结
  • overflow: hidden IE7无效
  • React-Native - 收藏集 - 掘金
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 从伪并行的 Python 多线程说起
  • 动态规划入门(以爬楼梯为例)
  • 后端_MYSQL
  • 机器学习 vs. 深度学习
  • 记一次删除Git记录中的大文件的过程
  • 解决iview多表头动态更改列元素发生的错误
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 看域名解析域名安全对SEO的影响
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前言-如何学习区块链
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • !!java web学习笔记(一到五)
  • #WEB前端(HTML属性)
  • (007)XHTML文档之标题——h1~h6
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (C#)获取字符编码的类
  • (C++20) consteval立即函数
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (编译到47%失败)to be deleted
  • (附源码)计算机毕业设计大学生兼职系统
  • (转)【Hibernate总结系列】使用举例
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net Stream篇(六)
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net解析传过来的xml_DOM4J解析XML文件
  • .skip() 和 .only() 的使用
  • ?php echo ?,?php echo Hello world!;?