방진 시계 방향 으로 회전 하 는 실현 코드

예 를 들 어 다음 과 같은 방진:
 1  2  3  4 5  6  7  8 9 10 11 12
13 14 15 16
시계 방향 으로 회전 하 는 것 은 다음 과 같은 결과 이다.
13  9  5  114 10  6  215 11  7  316 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("
");
 }

 return 0;
}

좋은 웹페이지 즐겨찾기