フォーチュン左義理の基礎class3-トピック6正方回転行列

フォーチュン左義理の基礎class3-トピック6正方回転行列

1.トピック

タイトル整数行列正方行列が与えられると、行列を作るために調整されている
ような90度の時計回りの回転を。
[]必要な余分の空間複雑性は補助アレイを使用せずに、O(1)です。

ここに画像を挿入説明

2.分析

分析:第一の外側層を形成した後、外部から内部への層によって回転するように正方行列所与のタイトルは、形状にマトリックスバックの構造を考えます。思想の所定の点(A、B)(C、の左右の角と同じ被写体5のD)。あなたは補助配列を使用することはできませんので、カバーの回転数は数の一時変数のステージングを必要とする前に。
;黒矢印の順に一つ、B、C、4つの変数1,4,16,13 4回の上書きのD前回のカウントによって仮番号と(1)
(2)行の対2,8,15,9方向と順次(1)は、スピンコーティング、3,12,14,5と同様の工程は、あまりにので、最外層12の回転数が完了したこと;
++、B ++、C(3)。内層6,7,11,10 D-について同じ。
ヒント:各最外列番号4、1,2,3から3であり、二行あたり2は、内側層6のみの出発点であり、その後数は、DBすなわち始点必要性を表してどのくらいの各サイクル回。表題の外側12は、サイクル数の3倍、インナー4回のサイクルの数を回転させることができます。

ここに画像を挿入説明

3.コアコード

(1)A、B、C、Dを初期化します。

int a = 0,b = 0,c = height - 1,d = width - 1;

(2)位置iと、B、Cの制御配列の、D、コードを検査する単純な能力によって、各コードを回転させます

void rotate_matrix(int arr[][width],int a,int b,int c,int d)
{
	int times = d - b;
		for(int i = 0;i < times;i++)
		{
			int temp = arr[a][b + i];
			arr[a][b + i] = arr[c - i][b];
			arr[c - i][b] = arr[c][d - i];
			arr[c][d - i] = arr[a + i][d];
			arr[a + i][d] = temp;
		}
}

層の(3)の総数は、C二つの変数によって回転を制御するために必要。被写体が正方形を与えているので、左と中央に向かって徐々に回転移動後のグリッドの各点の右コーナーは、2つの点、2点、横軸のみ可能斜間違ったが、回転層を対照C一致します番号。

while(a < c)
	{
		rotate_matrix(arr,a++,b++,c--,d--);
	}

4.完全なコード

#include<iostream>
#define height 4
#define width 4
using namespace std;

void rotate_matrix(int arr[][width],int a,int b,int c,int d)
{
	int times = d - b;
		for(int i = 0;i < times;i++)
		{
			int temp = arr[a][b + i];
			arr[a][b + i] = arr[c - i][b];
			arr[c - i][b] = arr[c][d - i];
			arr[c][d - i] = arr[a + i][d];
			arr[a + i][d] = temp;
		}
}

void print(int arr[][width])
{
	//打印输出
	for(int i = 0;i < height;i++)
	{
		for(int j = 0;j < width;j++)
		{
			cout<<arr[i][j]<<" " ;
		}
		cout<<endl;
	}
}
int main()
{
	//int arr[height][width] = {1,2,3,4,5,6,7,8,9};
	int arr[height][width] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
	int a = 0,b = 0,c = height - 1,d = width - 1;
	
	while(a < c)
	{
		rotate_matrix(arr,a++,b++,c--,d--);
	}
	print(arr);

 	system("pause");
	return 0;
}

5.出力

ここに画像を挿入説明

公開された51元の記事 ウォンの賞賛1 ビュー1387

おすすめ

転載: blog.csdn.net/shi_xiao_xuan/article/details/103660593