魔法少女小Scarlet
**
魔法少女小Scarlet
**
题目
- 魔法少女小Scarlet
- 题目描述
- 输入格式
- 输出格式
- 输入输出样例
- 思路
- 代码
题目描述
Scarlet 最近学会了一个数组魔法,她会在 n×n 二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转 90° 。
首先,Scarlet 会把 1 到 n^2的正整数按照从左往右,从上至下的顺序填入初始的二维数组中,然后她会施放一些简易的魔法。
Scarlet 既不会什么分块特技,也不会什么 Splay 套 Splay,她现在提供给你她的魔法执行顺序,想让你来告诉她魔法按次执行完毕后的二维数组。
输入格式
第一行两个整数 n,m表示方阵大小和魔法施放次数。
接下来 m 行,每行 4 个整数 x,y,r,z,表示在这次魔法中,Scarlet 会把以第 x 行第 y 列为中心的 2r+1 阶矩阵按照某种时针方向旋转,其中 z=0 表示顺时针,z=1 表示逆时针。
输出格式
输出 n 行,每行 n 个用空格隔开的数,表示最终所得的矩阵
输入输出样例
思路
先把转化好的数组传入到另一个数组中,再将数组的内容传回到适当的位置,利用循环实现多次旋转,最后的得到结果。
代码
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int a[1000][1000];
int b[1000][1000];
void chuangershuzu(int p)//创建一个1到n^2的二维数组
{int i = 0;int j = 0;int k = 0;for (i = 0; i <p; i++){for (j = 0; j < p; j++){a[i][j] = ++k;}}}
void xuanzhuanshuzu(int x,int y,int r,int z)
{if (z == 0)//顺时针{for (int i = 0; i <= 2 * r; i++){for (int j = 0; j <= 2 * r; j++){b[i][j] = a[x + r - 1 - j][y - r - 1 + i];//x+r-1是应该旋转的最后一行,y-r-1是第一列,这样就可以找到左下角的数,然后把每一列分别旋转到行的位置,就实现了顺时针旋转}}for (int i = 0; i <= 2 * r; i++)//减一是因为数组有第0行,而现实说的时候没有{for (int j = 0; j <= 2 * r; j++){a[x - r - 1 + i][y - r - 1 + j] = b[i][j];//将b数组传回去}}}else if(z==1)//逆时针{for (int i = 0; i <= 2 * r; i++){for (int j = 0; j <= 2 * r; j++)//参考顺时针旋转{b[i][j] = a[x - r - 1 + j][y + r - 1 - i];}}for (int i = 0; i <= 2 * r; i++){for (int j = 0; j <= 2 * r; j++){a[x - r - 1 + i][y - r - 1 + j] = b[i][j];}}}
}
int main()
{int n = 0;int m = 0;scanf("%d %d", &n, &m);getchar();int i = 0;int j = 0;int x = 0; int y = 0; int r = 0; int z = 0;chuangershuzu(n);//创建二维数组for (i = 0; i < m; i++){scanf("%d %d %d %d", &x, &y, &r, &z);xuanzhuanshuzu(x,y,r,z);//旋转数组}for (i = 0; i <n; i++)//输出{for (j = 0; j < n; j++){printf("%d ",a[i][j]);}printf("\n");}return 0;
}
魔法少女小Scarlet相关推荐
- # [1007]魔法少女小Scarlet
[1007]魔法少女小Scarlet 题目描述 Scarlet 最近学会了一个数组魔法,她会在 n×nn\times nn×n 二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转 90∘90^\cir ...
- [1007]魔法少女小Scarlet
文章目录 [1007]魔法少女小Scarlet 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 题解 代码: [1007]魔法少女小Scarlet 题目描述 Scarl ...
- 【菜鸟进阶之路】 P4924 [1007]魔法少女小Scarlet - 洛谷
一.题目部分 选自洛谷: P4924 [1007]魔法少女小Scarlet 二.解题过程 思路 见"提交AC答案"部分给出的注释 提交AC答案 #include<bits/s ...
- 模拟——魔法少女小Scarlet(洛谷 P4924)
模拟算法指的是让程序完整地按照题目叙述的方式运行得到答案! 此题选自洛谷 P4924 接下来进行旋转操作 旋转分为两部分,一部分是顺时针旋转,一部分是逆时针旋转 经过观察在我们可以发现顺时针旋转时原来 ...
- P4924 [1007]魔法少女小Scarlet
题目描述 Scarlet 最近学会了一个数组魔法,她会在 n×nn\times nn×n 二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转 90∘90^\circ90∘. 首先,Scarlet 会把 ...
- 魔法少女小Scarlet(洛谷P4924题题解,C++语言描述)
题目要求 题目链接 分析 数据量不大,直接开模拟即可. 此题恶心的地方就是题意理解与下标模拟. 首先,按要求初始化一个二维数组并填充[1,n2][1,n^{2}][1,n2]. 然后,分别进行每一次旋 ...
- [LGR053A] 魔法少女小Scarlet [模拟]
题意:https://www.luogu.org/problemnew/show/T48748 小模拟题 画个图 #include<cstdio> #include<cstdlib& ...
- 【无标题】P4924 [1007]魔法少女小Scarlet
找规律 1 2 3 7 4 1 4 5 6 -----> ...
- 魔法少女小Scarlet P4924 [1007]
原题链接 来自洛谷https://www.luogu.com.cn/problem/P4924 #include <bits/stdc++.h> using namespace std;i ...
最新文章
- ActiveMQ的消息存储和持久化
- 把毛选和鲁迅全集喂给AI后,写出来的高考作文太对味了
- Linux学习笔记三【文件及目录的权限管理篇】
- oracle查询指定行数间的记录
- 企业分布式微服务云SpringCloud SpringBoot mybatis (十)Spring Boot多数据源配置与使用Spring-data-jpa支持...
- jquery文档加载完毕后执行的几种写法
- Shell第二篇:正则表达式和文本处理工具
- 阿里云自带的mysql_阿里云Centos使用自带mysql
- scrapy通过item类直接创建数据库中的数据表
- 野心勃勃的NoSQL新贵 MongoDB应用实战(5)
- Golang 并发之锁
- linux打不开vlc怎么办下面是解决方法
- addon@Node.js之新手上路
- 卸载kerberos
- JDBC第四篇【数据库连接池、DbUtils框架、分页】(修订版)
- 私企招聘:腾讯TME社会招聘
- android ICS 系统启动之Logo相关学习总结
- 软考程序员Java答题速成_软考程序员考试下午题解题技巧
- linux分区Error creating partition
- lwip运行ram_RAM很便宜,所以我们为什么不从中运行所有内容?