迅雷笔试题---矩阵逆时针旋转90°
来源:互联网 发布:单片机电流检测电路图 编辑:程序博客网 时间:2024/06/14 09:53
昨天去参加了迅雷的笔试,主要分为客观题和主观题,客观题无非就是选择填空,但是很恶心的选择题有多选;主观题就是给个算法题目,让你写出代码。
矩阵的逆时针旋转90°就是一道主观题,并且题目要求不能用额外空间,当时我脑子蒙了,不会,回来搜了一下,但是那个方法太繁琐了,下标操作很复杂,
就算让我看了,然后再写一遍,我估计都比较困难,下边是网上的代码:
/*输入N阶矩阵,逆时针旋转90°*/#include<stdio.h>#include<stdlib.h>#define N 20int a[N][N];int main(){int i,k,n,j;printf("Enter n<=%d\n",N);scanf("%d",&n);//输入阶数if(n>N){printf("input error\n");exit(0);}for(i=0;i<n;i++)//输入矩阵元素的值for(j=0;j<n;j++){printf("a[%d][%d]=",i,j);scanf("%d",&a[i][j]);printf("\n");}printf("Input the array is:\n");for(i=0;i<n;i++)//打印出输入的矩阵{for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}////////////////////////////////////////////////////////////////////////////第一种方法比较繁琐,不好解决/*逆时针旋转90°的算法*/for(i=0;i<n/2;i++)/*共有n/2个旋转环*/for(k=0;k<n-1-i-i;k++)/*每个旋转环共有n-1-i-i个旋转组,每组4个元素,逐个旋转*/{/*旋转组4个元素,分别是a[i][k+i],a[k+i][n-1-i],a[n-1-i][n-1-i-k]a[n-1-i=k][i]*/int t; t =a[i][k+i];a[i][k+i] =a[k+i][n-1-i];a[k+i][n-1-i] =a[n-1-i][n-1-i-k];a[n-1-i][n-1-i-k]=a[n-1-i-k][i]; a[n-1-i-k][i] =t; }/*输出旋转后的矩阵*/printf("After rotating the array is:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}system("pause");return 0; }
反正我感觉不好记,刚好师妹在旁边,数学功底很强的那种,而且经常跟矩阵之类的打交道,然后我就问了问她,人家连反应都没反应,就说这还不简单,
矩阵主对角线翻转,然后再上下翻转,这让我这师兄顿时惊呆了。。。
废话不多说,上代码,很简单,也不用多记忆!
/*输入N阶矩阵,逆时针旋转90°*/#include<stdio.h>#include<stdlib.h>#define N 20int a[N][N];int main(){int i,k,n,j;printf("Enter n<=%d\n",N);scanf("%d",&n);//输入阶数if(n>N){printf("input error\n");exit(0);}for(i=0;i<n;i++)//输入矩阵元素的值for(j=0;j<n;j++){printf("a[%d][%d]=",i,j);scanf("%d",&a[i][j]);printf("\n");}printf("Input the array is:\n");for(i=0;i<n;i++)//打印出输入的矩阵{for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}////////////////////////////////////////////////////////////////////////////第二种方法,苗苗提供//先按主对角线翻转for (i = 0; i < n; i++){for (j = 0; j <= i; j++){int t = a[i][j];a[i][j] = a[j][i];a[j][i] = t;}}//再上下翻转for (k = 0; k < n/2; k++){for (i = 0; i < n; i++){int t2 = a[k][i];a[k][i] = a[n - 1 - k][i];a[n - 1 - k][i] = t2;}}/*输出旋转后的矩阵*/printf("After rotating the array is:\n");for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}system("pause");return 0; }给个结果图吧
哎,看来学好数学还是很重要滴~~~~~
- 迅雷笔试题---矩阵逆时针旋转90°
- 矩阵逆时针旋转90度
- 金山网络笔试题-逆时针输出矩阵
- python 实现 矩阵逆时针旋转
- 算法-将矩阵逆时针旋转90度
- Arrays_Strings 90度顺时针逆时针旋转方形矩阵 @CareerCup
- 由外向内顺时针&逆时针旋转矩阵
- 求原始矩阵逆时针旋转90度后的矩阵(CCF)
- Matlab与线性代数 -- 矩阵的左右翻转、上下翻转和矩阵的逆时针旋转90操作
- YUV422逆时针旋转90度
- 输入一个n*n的字符矩阵,把它逆时针旋转90度后输出:
- 长宽相等的矩阵(二维数组)逆时针旋转90度
- 数组字符串系列之,将矩阵逆时针旋转90度,要求使用最少的额外空间
- 笔试题&面试题:输入一个维度,逆时针打印出一个指定的矩阵
- nowcoder-顺时针打印矩阵-模拟魔方逆时针旋转
- 算法:数组顺时针、逆时针90度旋转
- YUV420P 旋转90度(逆时针)
- React Native ListView逆时针旋转90度
- .pfx格式和.Cer格式的区别
- where to used list 的使用技巧(追溯出口、表、structure、增强的使用地方)
- sudoku
- Mabatis generator
- templete_线段树
- 迅雷笔试题---矩阵逆时针旋转90°
- CUDA: CUDA程序优化步骤
- svm理论与实验之12: Hello World
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno
- Java反编译器安装及各版本介绍
- android apk反编译和odex转dex
- templete_trie
- LTTng 简介&使用实战
- oracle 函数 ROWIDTOCHAR(ROWID)