矩阵的旋转

来源:互联网 发布:母婴cms 编辑:程序博客网 时间:2024/06/09 23:55

矩阵的旋转

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

      把矩阵A的行换成相应的列,得到的新矩阵称为A的转置矩阵。大家在《程序设计基础》的上机实验题目和平时的练习中肯定做过一些关于矩阵的题,其中最常见的就是矩阵的转置了。so,今天我们就不考矩阵的转置了,我们要考察一下矩阵的旋转。
\

    //由上面可以看出,旋转只是把转置后的矩阵的每一行元素都倒置了一下。。 如第一行 1 5 9 13  变成了 13 9 5 1..倒置很简单 不多说了

输入

输入包含多组测试数据.
每组数据的第一行为两个整数 R 和 C(1 <= R, C <= 10 ),分别代表矩阵的行数和列数。
接下来 R 行,每行为 C 个空格隔开的整数。

输出

对于每组测试数据,输出按照顺时针旋转后的矩阵。

示例输入

4 41 2 3 45 6 7 89 10 11 1213 14 15 16

示例输出

13 9 5 114 10 6 215 11 7 316 12 8 4
 
#include <stdio.h>  矩阵的旋转int max(int a,int b){ if(a>b) return a; else return b;}int a[100][100];int main(){int i,k,j,t,n,m;while(scanf("%d%d",&m,&n)!=EOF) //输入一个m*n的矩阵{for(i=0;i<m;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);//先将该矩阵转置一下for(i=0;i<max(m,n);i++){for(j=0;j<i;j++)    {t=a[i][j];a[i][j]=a[j][i];a[j][i]=t; }}//此时进行旋转(顺时针)比较容易    for(i=0;i<n;i++){    for(k=0;k<m/2;k++)    {t=a[i][k];a[i][k]=a[i][m-1-k];a[i][m-1-k]=t;}    }//输出旋转后的矩阵    for(i=0;i<n;i++)for(j=0;j<m;j++)if(j!=m-1)printf("%d ",a[i][j]);elseprintf("%d\n",a[i][j]);}  return 0;} 

1 0
原创粉丝点击