0133-Rotation of a Pattern

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0133&lang=jp
8x8のパターンを90度・180度・270度回転させる問題。
180度/270度回転は90度回転を複数回行うことで実行可能なので、90度回転のみを考える。
回転行列を考えてやると、回転前の座標をx,yとすると回転後はy,7-xとなることが分かるので、それを実装。

char MAP[8][9];//マップ情報
void rotate(){//マップを90度回転
	char bM[8][9];
	memcpy(bM,MAP,72);
	for(int i=0;i<8;i++){
		for(int j=0;j<8;j++){
			MAP[i][j]=bM[7-j][i];
		}
	}
}
void showmap(){//マップを出力
	for(int i=0;i<8;i++){
		printf("%s\n",MAP[i]);
	}
}
int main(){
	for(int i=0;i<8;i++){
		scanf("%s",MAP[i]);
	}
	printf("90\n");
	rotate();
	showmap();
	printf("180\n");
	rotate();
	showmap();
	printf("270\n");
	rotate();
	showmap();
	return 0;
}