二维数组旋转90度、180度、270度

 

给定一个 × n 的二维矩阵表示一个图像。

将图像顺时针旋转 90 /180 /270 度。

  int a[3][3]={{1,2,3},{2,3,4},{4,5,6}};  //定义3*3数组演示
  int b[3][3],c[3][3],d[3][3];
  for(int i=0;i<3;i++)
  {   
     for(int j=0;j<3;j++)
	 {
		b[i][j]=a[2-j][i];  //顺时针旋转90 度
		c[i][j]=a[2-i][2-j]; //顺时针旋转180度
		d[i][j]=a[j][2-i];   //顺时针旋转270度
	 }
		
  }

对数组的通过改变数组的下标进行数组旋转的操作

输出结果

*****原数列************
1 2 3
2 3 4
4 5 6
****顺时针旋转90 度****
4 2 1
5 3 2
6 4 3
****顺时针旋转180度****
6 5 4
4 3 2
3 2 1
****顺时针旋转270度****
3 4 6
2 3 5
1 2 4
**********************

原理:顺时针旋转90度时,列号变行号,且号下标顺序颠倒。

 012
0123
1234
2456

即: a[0][0] -> b[0][2]      

        a[1][0] -> b[0][1]

        a[2][0] -> b[0][0]      //第一列变第一行

用变量 i 表示行,表示列的话,为a[i][j] = b[2-j][i] //其中2为数组下标最大值

即:

在n*n数组中只需令a[i][j] = b[n-1-j][i]即可完成数组旋转90度

在n*n数组中只需令c[i][j]=a[n-1-i][n-1-j]即可完成数组旋转180度

在n*n数组中只需令d[i][j]=a[j][n-1-i]即可完成数组旋转270度

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫RT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值