經(jīng)典矩陣問(wèn)題

//經(jīng)典矩陣問(wèn)題是利用數(shù)字生成一個(gè)矩陣,而該矩陣剛好是一個(gè)正方形,該矩陣內(nèi)的數(shù)字是有
//規(guī)律的排序而形成矩陣。比較常見(jiàn)有以下形式
//1.
//  1 2 9 10
//  4 3 8 11
//  5 6 7 12
//  16 15 14 13
//2.
//  1 2 6 7
//  3 5 8 13
//  4 9 12 14
//  10 11 15 16
//3.
//  1 2 3 4
//  12 13 14 5
//  11 16 15 6
//  10 9 8 7
//4.
//  7 6 5 16
//  8 1 4 15
//  9 2 3 14
//  10 11 12 13
#include<iostream>
using namespace std;
const int N = 5;//可修改
int a[N][N];
void Print(int n)
{
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < n; ++j)
			printf("%-2d ",a[i][j]);
			cout << endl;
	}
	cout << endl;
}
void Rectangle1()
{
	int i = 0, j = 0;
	int lap = 1, m = 1, n;
	//cout<< "please input n行數(shù)";
	//cin >> n;
	n = 4;
	a[i][j] = m++;
	lap++;
	while (lap <= n)
	{
		if (lap % 2 == 0)
		{
			for (j++; i < lap; i++)
				a[i][j] = m++;
			i--;
			for (j--; j >= 0; j--)
				a[i][j] = m++;
			j++;
		}
		else
		{
			for (i++; j < lap; j++)
				a[i][j] = m++;
			j--;
			for (i--; i >= 0; i--)
				a[i][j] = m++;
			i++;
		}
		lap++;
	}
	Print(n);
}
void Rectangle2()
{
	int i = 0, j = 0;
	int s = 1, nNum = 1;//s標(biāo)記升降方向,斜向上為升s=1,斜向下為降s=-1
	int n = 4;
	while (1)
	{
		if (s == 1)
		{
			a[i][j] = nNum;
			if (i - 1 < 0)
			{
				if (j + 1 == n)
					i++;
				else
					j++;
				s = -1;
			}
			else if (j + 1 == n)
			{
				i++;
				s = -1;
			}
			else
			{
				i--;
				j++;
			}
		}
		else
		{
			a[i][j] = nNum;
			if (j - 1 < 0)
			{
				if (j + 1 == n)
					j++;
				else
					i++;
				s = 1;
			}
			else if (i + 1 == n)
			{
				j++;
				s = 1;
			}
			else
			{
				i++;
				j--;
			}
		}
		nNum++;
		if (nNum > n*n)
			break;
	}
	Print(n);
}
void Rectangle3()
{
	int i = 0, j = 0;
	int n = 4;
	int x1=0, x2=n, y1=0, y2=n;//分別表示上下左右
	int m = 1, s = 1;//s=1表示升序,s=-1表示降序
	while (1)
	{
		if (s == 1)
		{
			for (j; j < y2; ++j)
				a[i][j] = m++;
			j--;
			i++;
			y2--;
			for (i; i < x2; ++i)
				a[i][j] = m++;
			i--;
			j--;
			x2--;
			s = -1;
		}
		else
		{
			for (j; j >=y1; --j)
				a[i][j] = m++;
			j++;
			i--;
			y1++;
			for (i; i>=x1+1; --i)
				a[i][j] = m++;
			i++;
			j++;
			x1++;
			s = 1;
		}
		if (m > n*n)
			break;
	}
	Print(n);
}
void Rectangle4()
{
	int i = 0, j = 0;
	int n = 4;
	int m = n*n;
	int x1 = 0, y1 = 0, x2 = n, y2 = n;
	int s = 1;
	if (n % 2 == 0)
	{
		j = n - 1;
		y2 = n - 1;
		s = 1;
	}
	else
	{
		i = n - 1;
		y1 = 1;
		s = -1;
	}
	while (1)
	{
		if (s == 1)
		{
			for (i; i < x2; ++i)
				a[i][j] = m--;
			i--;
			j--;
			x2--;
			for (j; j >= y1; --j)
				a[i][j] = m--;
			j++;
			i--;
			y1++;
			s = -1;
		}
		else
		{
			for (i; i >=x1; --i)
				a[i][j] = m--;
			i++;
			j++;
			x1++;
			for (j; j<y2; ++j)
				a[i][j] = m--;
			j--;
			i++;
			y2--;
			s = 1;
		}
		if (m < 1)
			break;
	}
	Print(n);
}
int main()
{
	Rectangle1();
	Rectangle2();
	Rectangle3();
	Rectangle4();
	system("pause");
	return 0;
}

分享題目:經(jīng)典矩陣問(wèn)題
URL標(biāo)題:http://muchs.cn/article30/ghooso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、網(wǎng)站導(dǎo)航移動(dòng)網(wǎng)站建設(shè)、用戶(hù)體驗(yàn)網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)