您当前的位置: 首页 >  ar

星拱北辰

暂无认证

  • 0浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

星拱北辰 发布时间:2021-04-02 18:26:20 ,浏览量:0

题目要求

题目链接

在这里插入图片描述

分析

数据量不大,直接开模拟即可。

此题恶心的地方就是题意理解与下标模拟。

首先,按要求初始化一个二维数组并填充 [ 1 , n 2 ] [1,n^{2}] [1,n2]。

然后,分别进行每一次旋转。 旋转到底是什么意思? 其实就是矩阵转置,一个大家入门编程都写过的一个题。 如果不明白的话可以自己画画图,其实围绕中心旋转的话,和转置真的一样。 本题与转置不同的地方在于:在顺时针转和逆时针转两种情况、小范围旋转而外部不变。

所以可以暴力开一个和原数组等大的二维数组,用于把需要处理的范围的元素做备份,然后按要求覆盖原数组即可。

顺时针的公式是: g r a p h [ x + k ] [ y − j ] = t e m p [ x + j ] [ y + k ] graph[x+k][y-j] = temp[x+j][y+k] graph[x+k][y−j]=temp[x+j][y+k] 逆时针的公式是: g r a p h [ x − k ] [ y + j ] = t e m p [ x + j ] [ y + k ] graph[x-k][y+j] = temp[x+j][y+k] graph[x−k][y+j]=temp[x+j][y+k]

AC代码
#include 

using namespace std;

int graph[521][521], temp[521][521];

int main() {
    int n, m, x, y, r, z;
    cin >> n >> m;
    // 初始化
    for(int i = 0, j, k = 1; i > y >> r >> z;
        x--;
        y--;
        // 暂存
        for (int j = -r; j             
关注
打赏
1660750074
查看更多评论
0.0416s