题解 | C翻转

#include <bits/stdc++.h>

using namespace std;

int a[6][6], b[6][6];

int main() {
    for (int i = 1; i <= 5; i++)for (int j = 1; j <= 5; j++)cin >> a[i][j];
    int k1, k2, x, y;
    cin >> k1 >> k2 >> x >> y;
    memcpy(b, a, sizeof(a));
    for (int i = x; i < x + k2; i++) {
        for (int j = y; j < y + k2; j++) {
            if (k1 == 1)
                b[i][j] = a[x + y + k2 - 1 - j][i - x + y];
            else
                b[i][j] = a[j - y + x][x + k2 - 1 - i + y];
        }
    }
    for (int i = 1; i <= 5; i++) {
        for (int j = 1; j <= 5; j++) {
            cout << b[i][j] << ' ';
        }
        cout << endl;
    }
}

核心是矩阵旋转的代码,可以看到,上面的输入是可以映射到旋转的状态选择的,然后我们根据状态去转换这些数据的位置即可。然后其实我们的顺时针和逆时针就是数据错一下。

全部评论

相关推荐

02-22 21:16
已编辑
门头沟学院 运营
牛客928043833号:离了你谁还拿我当个宝
点赞 评论 收藏
分享
02-23 12:32
已编辑
门头沟学院 嵌入式工程师
King987:学历没有问题,然后既然有实习经历的话,把这个放在上面多写一点,哪怕你自己包装一下,只要能圆回来就行,既然有实习经历的话,肯定主要看实习经历之类的。然后也会主要问这里多准备准备
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务