**

魔法少女小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相关推荐

  1. # [1007]魔法少女小Scarlet

    [1007]魔法少女小Scarlet 题目描述 Scarlet 最近学会了一个数组魔法,她会在 n×nn\times nn×n 二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转 90∘90^\cir ...

  2. [1007]魔法少女小Scarlet

    文章目录 [1007]魔法少女小Scarlet 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 题解 代码: [1007]魔法少女小Scarlet 题目描述 Scarl ...

  3. 【菜鸟进阶之路】 P4924 [1007]魔法少女小Scarlet - 洛谷

    一.题目部分 选自洛谷: P4924 [1007]魔法少女小Scarlet 二.解题过程 思路 见"提交AC答案"部分给出的注释 提交AC答案 #include<bits/s ...

  4. 模拟——魔法少女小Scarlet(洛谷 P4924)

    模拟算法指的是让程序完整地按照题目叙述的方式运行得到答案! 此题选自洛谷 P4924 接下来进行旋转操作 旋转分为两部分,一部分是顺时针旋转,一部分是逆时针旋转 经过观察在我们可以发现顺时针旋转时原来 ...

  5. P4924 [1007]魔法少女小Scarlet

    题目描述 Scarlet 最近学会了一个数组魔法,她会在 n×nn\times nn×n 二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转 90∘90^\circ90∘. 首先,Scarlet 会把 ...

  6. 魔法少女小Scarlet(洛谷P4924题题解,C++语言描述)

    题目要求 题目链接 分析 数据量不大,直接开模拟即可. 此题恶心的地方就是题意理解与下标模拟. 首先,按要求初始化一个二维数组并填充[1,n2][1,n^{2}][1,n2]. 然后,分别进行每一次旋 ...

  7. [LGR053A] 魔法少女小Scarlet [模拟]

    题意:https://www.luogu.org/problemnew/show/T48748 小模拟题 画个图 #include<cstdio> #include<cstdlib& ...

  8. 【无标题】P4924 [1007]魔法少女小Scarlet

    找规律      1 2 3                                         7 4 1 4 5 6                        ----->  ...

  9. 魔法少女小Scarlet P4924 [1007]

    原题链接 来自洛谷https://www.luogu.com.cn/problem/P4924 #include <bits/stdc++.h> using namespace std;i ...

最新文章

  1. ActiveMQ的消息存储和持久化
  2. 把毛选和鲁迅全集喂给AI后,写出来的高考作文太对味了
  3. Linux学习笔记三【文件及目录的权限管理篇】
  4. oracle查询指定行数间的记录
  5. 企业分布式微服务云SpringCloud SpringBoot mybatis (十)Spring Boot多数据源配置与使用Spring-data-jpa支持...
  6. jquery文档加载完毕后执行的几种写法
  7. Shell第二篇:正则表达式和文本处理工具
  8. 阿里云自带的mysql_阿里云Centos使用自带mysql
  9. scrapy通过item类直接创建数据库中的数据表
  10. 野心勃勃的NoSQL新贵 MongoDB应用实战(5)
  11. Golang 并发之锁
  12. linux打不开vlc怎么办下面是解决方法
  13. addon@Node.js之新手上路
  14. 卸载kerberos
  15. JDBC第四篇【数据库连接池、DbUtils框架、分页】(修订版)
  16. 私企招聘:腾讯TME社会招聘
  17. android ICS 系统启动之Logo相关学习总结
  18. 软考程序员Java答题速成_软考程序员考试下午题解题技巧
  19. linux分区Error creating partition
  20. lwip运行ram_RAM很便宜,所以我们为什么不从中运行所有内容?

热门文章

  1. mt4查看虚拟服务器,mt4 如何查看服务器地址
  2. 理论力学中的 动量定理、动量矩定理、动能定理
  3. 什么是编程语言的强类型,弱类型
  4. 大数据开发的面试总结
  5. 【毕业设计】大数据客户价值分析(RFM模型)
  6. 码学堂P1686 Hello, World!题解
  7. 【高速数字化仪应用案例系列】虹科数字化仪在通信领域的应用
  8. 同步交互与异步交互(简单易懂)
  9. 页面调用ADB操作Android设备
  10. 【k8s】三、k8s集群的初始化