蓝桥杯-矩阵转置-顺时针旋转矩阵
Posted 勇敢*牛牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯-矩阵转置-顺时针旋转矩阵相关的知识,希望对你有一定的参考价值。
蓝桥杯-矩阵转置
#include <stdio.h>
#include <stdlib.h>
int fun(int array[][3],int m,int n)
int i,j;
// 原来的矩阵
for(i=0;i<m;i++)
for(j=0;j<n;j++)
printf("%d ",array[i][j]);
printf("\\n");
// 转置后的
printf("\\n++++++++++++++++++++++\\n");
int **p = (int**)malloc(m*sizeof(int*));
for(i=0;i<n;i++)
p[i] = (int*)malloc(sizeof(int*));
for(i=0;i<m;i++)
for(j=0;j<n;j++)
p[i][j] = array[j][i];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
printf("%d ",p[i][j]);
printf("\\n");
int main()
int a[3][3] = 1,2,3,4,5,6,7,8,9;
fun(a,3,3);
return 0;
顺时针旋转矩阵
#include <stdio.h>
#include <stdlib.h>
int fun(int array[][3],int m,int n)
int i,j;
int mid1,mid2;
// 原来的矩阵
printf("转置前:\\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
printf("%d ",array[i][j]);
printf("\\n");
// 旋转后的矩阵
if(n%2 == 0)
mid1 = mid2 = n/2;
else
mid1 = n/2+1;
mid2 = n/2;
for(i=0;i<mid1;i++)
for(j=0;j<mid2;j++)
int temp = array[j][n-1-i];
array[j][n-1-i] = array[i][j];
int temp2 = array[n-1-i][n-1-j];
array[n-1-i][n-1-j] = temp;
temp = array[n-1-j][i];
array[n-1-i][i] = temp2;
array[i][j] =temp;
printf("转置后:\\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
printf("%d ",array[i][j]);
printf("\\n");
return 0;
int main()
int a[3][3] = 1,2,3,4,5,6,7,8,9;
fun(a,3,3);
return 0;
或者
将矩阵沿对角线翻转,之后再上下翻转;
以上是关于蓝桥杯-矩阵转置-顺时针旋转矩阵的主要内容,如果未能解决你的问题,请参考以下文章