魔方矩阵

魔方矩阵又称幻方,是有相同的行数和列数,并在每行每列、对角线上的和都相等的矩阵。魔方矩阵中的每个元素不能相同。

3*3魔方矩阵

1、1放在第一行中间

2、后面的数字放在当前数字上一行后一列。

3、如果当前位置已有数据则放在前一个数字的下一行同列。

3*3魔方矩阵
8 1 6
3 5 7
4 9

2


//魔方阵
void MagicSquare()
{
#define ROW 5
	int arr[ROW][ROW] = {0};//聚合类型初始化为零,剩下的全为零。初始化为零的原因是不能判断有没有  只能判断有没有有效数字

	int currow = 0;
	int curcol = ROW/2;
	arr[currow][curcol] = 1;

	for(int i=2;i<=ROW*ROW;i++)
	{
		/*//1
		currow--;
		if(currow < 0)
			currow = ROW - 1;*/

		//currow = (currow==0 ? ROW-1 : currow-1);//2

		currow = (currow-1+ROW)%ROW;//3
		curcol = (curcol+1)%ROW;
		if(arr[currow][curcol] != 0)//已经有值
		{
			currow = (currow+1+1)%ROW;
			curcol = (curcol-1+ROW)%ROW;
		}
		arr[currow][curcol] = i;
	}

	for(int i=0;i<ROW;i++)
	{
		for(int j=0;j<ROW;j++)
		{
			printf("%-3d",arr[i][j]);
		}
		printf("\n");
	}
}

int main()
{
	MagicSquare();
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Dthinking/article/details/81130422