码迷,mamicode.com
首页 > 编程语言 > 详细

趣味数组(一)

时间:2015-07-31 20:24:59      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:算法   趣味数组   

首先,我们来聊一聊魔方数组。

1.魔方数组

首先,啥事魔方数组呢?例如:

6  1  8

7  5  3

2  9  4

他的每一行,每一列以及对角线的和都等于一个常数,这个常数为n*(n*n+1)/2。其中,n为阶数。

那么,我们应该怎么实现魔方数组呢?

1.我们将1安置在第一行的中间位置,及(i,j)=(1,(n+1)/2)

2.下一个数我们写到上一个数主对角线的上方,即(i1,j1)=(i-1,j-1)

3.如果在上一步中,i和j出界,则令i=n或者j=n。

4.如果,应写的位置没有出界,但是已经有数字,则将他移到下一行,但是列数不变。

代码如下:环境VS2010

<span style="font-size:24px;">	int a[100][100];
	int n;//
	scanf("%d",&n);

	int i=1;
	int j=int((n+1)/2);
	int i1,j1;
	int x=1;
	memset(a,0,sizeof(a));

	while(x<=n*n)
	{
		a[i][j]=x;
		x++;
		i1=i;
		j1=j;
		i--;
		j--;
		if (i==0)
		{
			i=n;
		}
		if (j==0)
		{
			j=n;
		}
		if (a[i][j]!=0)
		{
			i=i1+1;
			j=j1;
		}
	}
	for(i=1;i<=n;i++)
	{
			printf("\n");
		for (j=1;j<=n;j++)
		{
			printf("%4d",a[i][j]);
		}
	}
</span>



版权声明:本文为博主原创文章,未经博主允许不得转载。

趣味数组(一)

标签:算法   趣味数组   

原文地址:http://blog.csdn.net/jin_syuct/article/details/47173775

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!