矩阵旋转(C语言)

这篇具有很好参考价值的文章主要介绍了矩阵旋转(C语言)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有一个NxN整数矩阵,旋转一次为90度,矩阵既可以顺时针旋转也可以逆时针旋转。

现在给定一个NxN的矩阵、矩阵的阶数N和矩阵旋转次数k,k为负数时,代表矩阵逆时针旋转的次数,k为正数时,代表矩阵顺时针旋转次数。

请输出旋转后的NxN矩阵。

数据范围:0 < n <300,矩阵中的值满足 0 <val<1000

输入格式:

输入第一行矩阵阶数n,旋转次数k;

第二行矩阵中的各个元素

输出格式:

输出旋转后的矩阵,每个元素后面都有一个空格

输入样例:

在这里给出一组输入。例如:

3 1
1 2 3
4 5 6
7 8 9

输出样例:

在这里给出相应的输出。例如:

7 4 1 
8 5 2 
9 6 3 

 思路:矩阵经过旋转后的结果,可以把原矩阵按照不同方向和方法进行打印而得到

原矩阵:
1 2 3
4 5 6
7 8 9
旋转90度:(一次)其实是把原矩阵按列为外层循环(由小到大),按行为内层循环(由大到小)遍历
7 4 1
8 5 2
9 6 3
旋转180度:(二次)其实是把原矩阵按列为外层循环(由大到小),按列为内层循环(由大到小)遍历
9 8 7
6 5 4
3 2 1
旋转270度:(三次)其实是把原矩阵按列为外层循环(由大到小),按行为内层循环(由小到大)遍历
3 6 9
2 5 8
1 4 7
旋转360度:(四次)
1 2 3
4 5 6
7 8 9

逆时针旋转后的结果与上述顺时针旋转结果一致(并不一一对应)

 

#include<stdio.h>
int main()
{
	int n,k,data[301][301];
	scanf("%d%d",&n,&k);  //矩阵的阶数,和旋转的次数 
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			scanf("%d",&data[i][j]);
		}
	}
		k%=4;
		if(k==0)   //旋转四次以后与原矩阵相同 
		{
			for(int i=0;i<n;i++)
			{
				for(int j=0;j<n;j++)
				{
					printf("%d ",data[i][j]);
				}
				printf("\n");
			}	
		}
		else if(k==1||k==-3)     //顺时针旋转1次与逆时针旋转3次一致 
		{
			for(int j=0;j<n;j++)
			{
				for(int i=n-1;i>=0;i--)
				{
					printf("%d ",data[i][j]);
				}
				printf("\n");
			}			
		}
		else if(k==2||k==-2)    //顺时针旋转2次与逆时针旋转两次一致 
		{
			for(int i=n-1;i>=0;i--)
			{
				for(int j=n-1;j>=0;j-- )
				{
					printf("%d ",data[i][j]);
				}
				printf("\n");
			}				
		}
		else if(k==-1||k==3)    //顺时针旋转三次与逆时针旋转一次相同 
		{
			for(int j=n-1;j>=0;j--)
			{
				for(int i=0;i<n;i++ )
				{
					printf("%d ",data[i][j]);
				}
				printf("\n");
			}				
		}

}

 文章来源地址https://www.toymoban.com/news/detail-776344.html

到了这里,关于矩阵旋转(C语言)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 转换矩阵、平移矩阵、旋转矩阵关系以及python实现旋转矩阵、四元数、欧拉角之间转换

    由于在平时总是或多或少的遇到平移旋转的问题,每次都是现查资料,然后查了忘,忘了继续查,这次弄明白之后干脆写一篇文章,给人方便同时于己方便,后续如有扩充或变动也方便添加。 假设有两个向量 a 1 = ( x 1 , y 1 , z 1 ) a_1 = (x_1, y_1, z_1) a 1 ​ = ( x 1 ​ , y 1 ​ , z 1 ​

    2024年02月03日
    浏览(79)
  • 旋转图像(旋转矩阵)

    声明 该系列文章仅仅展示个人的解题思路和分析过程,并非一定是优质题解,重要的是通过分析和解决问题能让我们逐渐熟练和成长,从新手到大佬离不开一个磨练的过程,加油! 原题链接 旋转图像 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻

    2024年02月13日
    浏览(25)
  • 3维旋转--三维旋转矩阵

    先考虑二维的旋转,根据三角函数的关系,可以得到: { x ′ = ∣ O P ∣ ⋅ cos ⁡ ( α + β ) = ∣ O P ∣ ⋅ ( cos ⁡ α ⋅ cos ⁡ β − sin ⁡ α ⋅ sin ⁡ β ) = x ⋅ cos ⁡ β − y ⋅ sin ⁡ β y ′ = ∣ O P ∣ ⋅ sin ⁡ ( α + β ) = ∣ O P ∣ ⋅ ( cos ⁡ α ⋅ sin ⁡ β + sin ⁡ α ⋅ cos ⁡ β ) = x

    2024年02月22日
    浏览(37)
  • 螺旋矩阵、旋转矩阵、矩阵Z字打印

    类似于这个螺旋矩阵我们也是在每次处理最外层的矩形,然后往内收缩。 对于一个矩形我们选取四个点依次进行交换即可 也是和螺旋矩阵类似选取两个点进行循环

    2024年02月10日
    浏览(37)
  • 矩阵理论| 特殊矩阵:酉矩阵、旋转与镜射

    复数域的“正交矩阵”就是酉矩阵。酉矩阵的列向量组为一组标准正交基,因而 酉矩阵 U U U 满足 U H U = U U H = I U^HU=UU^H=I U H U = U U H = I 酉矩阵出现于许多分解中: SVD( A = U Σ V H A=USigma V^H A = U Σ V H )、矩阵三角化的 Schur 定理( A = A = U T U H A= A=UTU^H A = A = U T U H , T T T 为上三

    2024年02月07日
    浏览(46)
  • 华为OD机试题,用 Java 解【和最大子矩阵】问题 | 含解题说明

    华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南 华为od机试,独家整理 已参加机试人员的实战技巧 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典 给定一个二维整数矩阵,要在这个矩阵中

    2023年04月11日
    浏览(41)
  • 【Python】旋转矩阵与旋转向量的相互转换(OpenCV)

    因为任意旋转矩阵仅有 3 个自由度,因此旋转向量是旋转矩阵的一个方便和最紧凑的表示。在全局 3D 几何优化中常用到旋转矩阵和旋转向量的相互转换,例如相机标定、PnP 问题的求解等。本文介绍基于 OpenCV-Python 的互转换实现方法。 参数详解 : src :输入旋转向量(3x1 或

    2024年02月12日
    浏览(42)
  • 【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵

    废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是螺旋矩阵,使用【二维数组】这个基本的数据结构来实现 二维数组的结构特性入手 根据题目示例 matrix = [[1,2,3],[4,5,6],[7,8,9]] 的对应输出 [1,2,3,6,9,8,7,4,5] 可以发现,顺时针打印矩阵的顺序

    2024年02月06日
    浏览(53)
  • 三维空间刚体运动之旋转矩阵与变换矩阵

    点: 点是空间中的基本元素,没有长度,没有体积; 向量: 把两个点连接起来,就构成了向量,向量可以看成从某点指向另一点的一个箭头;只有当我们指定这个三维空间中的某个坐标系时,才可以谈论该向量在此坐标系下的坐标;默认向量就是列向量; 坐标系: 三根不

    2024年02月11日
    浏览(61)
  • 欧拉角与旋转矩阵

    我们想描述刚体在现实世界的旋转时,可以用旋转矩阵、旋转向量,四元数等来表示,虽然它们能描述旋转,但对我们人类是非常不直观的。很难说,给你一个旋转矩阵R或者四元数q,我们能想象出他是怎么旋转的。 欧拉角就可以很直观的展现这种旋转的过程。因为他把整个

    2023年04月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包