关于矩阵旋转,在不修改main()里面的代码的情况下,如何优化,可不可以再减少一些循环次数?

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int a[4][4];
void RotateLeft(int(&inout)[4][4])
{
	for (int y = 0; y <4; y++){
		for (int x = 0; x < 4; x++){
			a[y][x] = inout[x][4-1-y];
		}
	}
	for (int y = 0; y < 4; y++) {
		for (int x = 0; x < 4; x++) {
			inout[y][x] =a[y][x];
		}
	}
}

void Output(int(&a)[4][4])
{	
	for (int y = 0; y < 4; ++y){
		for (int x = 0; x < 4; ++x){	
			printf("%3d", a[y][x]);
		}
		puts("");
	}
}

int main()
{
	int a[4][4] =
	{
		{  0,  1,  2,  3},
		{  4,  5,  6,  7},
		{  8,  9, 10, 11},
		{ 12, 13, 14, 15},
	};
	Output(a);
	for (int i = 0; i < 4; i++){
		puts("== Rotate left ==");
		RotateLeft(a);
		Output(a);
	}
}

 

查看全部
qq_50710041
大妮可�
2020/11/24 09:46
  • c++
  • c语言
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

1个回复