方阵顺时针旋转的实现代码

实现方阵顺时针旋转的算法可以采用原地旋转法。代码流程如下:

1.将方阵顺时针旋转90度,可以先将方阵进行转置,然后将每一行倒序排列即可。

2.将方阵顺时针旋转180度,可以先将方阵进行上下翻转,再进行左右翻转即可。

3.将方阵顺时针旋转270度,可以先将方阵进行转置,然后将每一列倒序排列即可。

下面是具体的实现代码:

#方阵顺时针旋转90度
def rotate(matrix):
    n = len(matrix)
    #转置矩阵
    for i in range(n):
        for j in range(i, n):
            matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
    #倒序排列每行
    for i in range(n):
        matrix[i].reverse()
    return matrix
#方阵顺时针旋转180度
def rotate(matrix):
    n = len(matrix)
    #上下翻转矩阵
    for i in range(n // 2):
        matrix[i], matrix[n - i - 1] = matrix[n - i - 1], matrix[i]
    #左右翻转矩阵
    for i in range(n):
        for j in range(i):
            matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
    return matrix
#方阵顺时针旋转270度
def rotate(matrix):
    n = len(matrix)
    #转置矩阵
    for i in range(n):
        for j in range(i, n):
            matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
    #倒序排列每列
    for i in range(n // 2):
        for j in range(n):
            matrix[j][i], matrix[j][n - i - 1] = matrix[j][n - i - 1], matrix[j][i]
    return matrix

下面是两个示例:

示例一:

对于一个3*3的方阵:

1 2 3
4 5 6
7 8 9

顺时针旋转90度后变为:

7 4 1
8 5 2
9 6 3

示例二:

对于一个4*4的方阵:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

顺时针旋转180度后变为:

16  15  14  13
12  11  10   9
 8   7   6   5
 4   3   2   1

以上就是方阵顺时针旋转的实现代码的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:方阵顺时针旋转的实现代码 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++ 如何使用栈求解中缀、后缀表达式的值

    C++ 中,我们可以使用栈来求解中缀表达式的值或者先将中缀表达式转换为后缀表达式再进行求解。下面我将演示如何使用栈求解中缀表达式的值和后缀表达式的值。 求解中缀表达式的值 步骤 创建两个栈,一个用于存储操作数,另一个用于存储运算符。 从左到右遍历中缀表达式。 如果当前字符是数字,则入操作数栈。 如果当前字符是运算符,则与运算符栈中的栈顶运算符比较,如果当前运…

    C 2023年5月23日
    00
  • C++如何实现BCD码和ASCII码的相互转换

    BCD码是一种二进制编码方式,用来表示十进制数字。在每一个字节中,四位二进制数能够表示一个十进制位的数字。ASCII码则是一种字符编码方式,将每个字符映射为一个唯一的数字。 在C++中,将BCD码转换为ASCII码的一般方法是,将BCD码中的每个数字转换为对应的ASCII码数字。而将ASCII码转换为BCD码的一般方法是,将ASCII码中的每个数字转换为对应…

    C 2023年5月23日
    00
  • 利用Golang解析json数据的方法示例

    下面我将详细讲解如何利用Golang解析json数据的方法,包括两个示例。 解析json数据的基本方法 在Golang中,我们可以通过下面的代码来解析json数据: import ( "encoding/json" ) type User struct { Name string `json:"name"` Age i…

    C 2023年5月23日
    00
  • C++中replace() 函数的基本用法

    当我们在使用C++字符串(string)时,可能会需要对其中的某些字符进行替换操作。C++中的replace()函数可以完成这个任务,它可以在指定的位置上替换指定数量的字符为另外一组字符序列。下面我们就来具体了解一下replace()函数的用法。 函数原型 C++中replace()函数的原型如下: string replace(size_t pos, si…

    C 2023年5月23日
    00
  • Lua和Nginx结合使用的超级指南

    非常感谢您对“Lua和Nginx结合使用的超级指南”的关注。下面,我将为您详细讲解该攻略的完整流程。 导语 Nginx是一款轻量级、高性能的Web服务器和反向代理服务器,由于其高性能和可靠性,成为了许多大型互联网企业的首选。而Lua作为一种高效、轻量级的脚本语言,具有易于扩展和快速开发等优点,被广泛应用于Nginx中,弥补了Nginx对于脚本语言支持的不足。…

    C 2023年5月23日
    00
  • C语言scanf()和gets()的区别

    在C语言中,scanf()和gets()都是用于从标准输入流中读取用户输入的函数。它们有一些区别,下面我们来详细讲解它们的区别以及使用攻略。 scanf()和gets()的区别 输入方式不同:scanf()函数是按照指定格式从标准输入流中读取输入数据;而gets()函数则是以换行符为结束标志从标准输入流中读取整行字符串。 安全性不同:gets()函数会读取用…

    C 2023年5月10日
    00
  • C语言实现抢红包算法

    C语言实现抢红包算法 在C语言中实现抢红包算法可以分为以下几个步骤: 步骤一:确定红包总金额以及红包个数 在C语言中,可以通过从键盘输入获取红包总金额和红包个数。可以用 scanf() 函数来实现,代码示例如下: printf("请输入红包总金额:"); scanf("%f",&total_money); pr…

    C 2023年5月22日
    00
  • C语言中实现itoa函数的实例

    C语言中实现itoa函数的实例 什么是itoa函数? itoa函数是C++的标准库函数,可以将整型数据转换成对应的字符串。但在C中并没有该函数,为了方便C程序员的编程,我们需要自己实现该函数。 实现itoa函数的过程 实现itoa函数主要包括以下几个步骤: 判断待转换的整数是否为负数,如果是负数,则需要在最终的字符串前面添加负号。 将整型数按位分解,得到每个…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部