下面是个超简单的方阵顺时针旋转的实现代码教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~
【 tulaoshi.com - 编程语言 】
例如,如下的方阵:
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; irank * rank; i++)
{
// 以原第一行进行分析 一行数变为同一列 以原第一列为例,变为同一行。 (i%rank)*rank使列变为行 rank-(i/rank)-1) 使行变为列
y[(i%rank)*rank+(rank-(i/rank)-1) ] = x[i];
}
for(i=0; irank*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; irank; i++)
{
for(int j=0; jrank; j++)
{
printf("%4d", x[i][j]);
}
printf("n");
}
return 0;
}
来源:http://www.tulaoshi.com/n/20160219/1590316.html
看过《方阵顺时针旋转的实现代码》的人还看了以下文章 更多>>