方阵顺时针旋转 方阵顺时针旋转的实现代码

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

方阵顺时针旋转 方阵顺时针旋转的实现代码

  2021-03-18 我要评论
想了解方阵顺时针旋转的实现代码的相关内容吗,在本文为您仔细讲解方阵顺时针旋转的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:c++,方阵顺时针旋转,下面大家一起来学习吧。

例如,如下的方阵:

 1  2  3  4
 5  6  7  8
 9 10 11 12

13 14 15 16

顺时针旋转,却是如下结果:


13  9  5  1
14 10  6  2
15 11  7  3
16 12  8  4

复制代码 代码如下:

#include <stdio.h>
void rotate(int* x, int rank)
{
 int* y = (int*)malloc(sizeof(int) * rank * rank); 

 for(int i=0; i<rank * rank; i++)
 {
         // 以原第一行进行分析  一行数变为同一列  以原第一列为例,变为同一行。  (i%rank)*rank使列变为行   rank-(i/rank)-1) 使行变为列
  y[(i%rank)*rank+(rank-(i/rank)-1) ] = x[i]; 
 }

 for(i=0; i<rank*rank; i++)
 {
  x[i] = y[i];
 }

 free(y);
}

int main(int argc, char* argv[])
{
 int x[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
 int rank = 4;

 rotate(&x[0][0], rank);

 for(int i=0; i<rank; i++)
 {
  for(int j=0; j<rank; j++)
  {
   printf("%4d", x[i][j]);
  }
  printf("\n");
 }

 return 0;
}


猜您喜欢

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们