栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

题目描述:

问题描述

  现在有一张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()

    

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987264.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号