求助大佬QAQ,模拟炸了
查看原帖
求助大佬QAQ,模拟炸了
50871
Euler_Pursuer楼主2020/10/26 08:45

发现一个两年前没A的题,今天又来弄一下发现还是10分。。。但是试了很多例子都没问题。。。求助各位大佬帮我看一下:

#include <cstdio>
#include <iostream>

using namespace std;

int Matrix[505][505];

inline void turn(int a, int b, int x, int y, bool z)
{
    int cop[505][505];
    for(register int i = a; i <= x; i += 1)
            for(register int j = b; j <= y; j += 1)
                cop[i][j] = Matrix[i][j];
    if(z)//逆时针
        for(register int i = a; i <= x; i += 1)
            for(register int j = b; j <= y; j += 1)
                Matrix[y-j+b][i] = cop[i][j];
    else
        for(register int i = a; i <= x; i += 1)
            for(register int j = b; j <= y; j += 1)
                Matrix[j][x-i+a] = cop[i][j];
}

int main()
{
    int n, m;
    cin >> n >> m;
    for(register int i = 1; i <= n; i += 1)
        for(register int j = 1; j <= n; j += 1)
            Matrix[i][j] = (i-1)*n + j;
    int x, y, r, z;
    while(m--)
    {
        scanf("%d%d%d%d", &x, &y, &r, &z);
        turn(x-r, y-r, x+r, y+r, z);
    }
    for(register int i = 1; i <= n; i += 1)
    {
        for(register int j = 1; j <= n; j += 1)
            printf("%d ", Matrix[i][j]);
        puts("");
    }
    return 0;
}

2020/10/26 08:45
加载中...