蓝桥杯:翻转旋转变换(矩阵旋转)

本文介绍如何使用Python实现四种类别下的矩阵旋转操作,包括水平翻转、垂直翻转和顺、逆时针90度旋转,适用于图像处理和编程挑战。通过实例解析,一步步指导读者完成从输入到输出的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

问题描述

  现在有一张n行m列的由”o”和”*”字符组成的图案,需要你做若干次翻转和旋转操作,并输出最后的结果.

输入格式

  第一行两个整数n和m
  接下来n行,每行m个字符,表示待变换的图案
  下一行一个整数p表示操作次数
  接下来p行,每行一个整数,表示操作.(1代表水平翻转,2代表垂直翻转,3代表顺时针转90°,

4代表逆时针转90°)

输出格式

  输出n行m列(或m行n列)字符,表示变换后的图案

样例输入

4 5
**ooo
**o**
**oo*
**o**
2
2
3

样例输出

****
****
oooo
o*o*
o***

数据规模和约定

  1<=n,m<=100
  0<=p<=1000000

分析: 

这题属于入门题的难度了 相信对于前两个操作来说 大家都没有问题 正常反转即可

问题是 顺时针旋转90度和逆时针旋转90度该怎么做呢

这里Python提供了很好的一个函数——zip

实现矩阵旋转的方法可以参考:Python :矩阵旋转_KS想去海底的博客-CSDN博客_python矩阵旋转

代码实现: 

def check1(graph) :
    for i in range(len(graph)) :
        graph[i] = graph[i][::-1]
    return graph

def check2(graph) :
    graph = graph[::-1]
    return graph

def check3(graph) :
    graph = graph[::-1]
    graph = list(map(list,zip(*graph)))
    return graph

def check4(graph) :
    graph = list(map(list,zip(*graph)))
    graph = graph[::-1]
    return graph

n,m = map(int,input().split())
Map = []
for i in range(n) : Map.append(list(input()))
p = int(input())
for _ in range(p) :
    x = int(input())
    if x == 1 : 
        Map = check1(Map)
    elif x == 2 :
        Map = check2(Map)
    elif x == 3 :
        Map = check3(Map)
    else :
        Map = check4(Map)
        
for i in range(len(Map)) :
    for j in range(len(Map[i])) :
        print(Map[i][j],end='')
    print()

    

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世间无人识我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值