Problem1360--方阵转置--逆时针旋转90

1360: 方阵转置--逆时针旋转90

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 26  Solved: 2
[Submit] [Status] [Web Board] [Creator:]

Description

    例如,如下的方阵:
 
 1 2 3 4
 5 6 7 8
 9 10 11 12
13 14 15 16
 
    转置后变为:
 
 1 5 9 13
 2 6 10 14
 3 7 11 15
 4 8 12 16

完成下列程序填空

#include <stdio.h>
#include <malloc.h>
void rotate(int* x, int rank)
{
 int* y = (int*)malloc(                             );  // 填空
 int i;
 for(i=0; i<rank * rank; i++)
 {
  y[                                                   ] = 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;
}

Sample Input

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

Sample Output

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

Source/Category