奇数魔性矩阵

奇数的魔性矩阵其实挺好玩的,就是我们小时候经常玩的给你一个方格,不管你是横向加还是纵向加或是斜对角线相加起来它们的和是不变的,和是相同的。是不是会很好玩呢!现在我们就编程出这个好玩的游戏。给这个方形矩阵添加数字是按这样的原则的。首先现在第一行中间位置放1,然后下一个数字是当前数字的右上方位置,如果右上方超过了方形的边界,这是我们就把这个矩阵看成是上下相连左右相连,继续放在他的右上方。如有右上方有数了就放在这个数的正下方,这个地方有两种说法,这是第一种,另一种就是如果当前这个数能被方阵的长整除,那么就把这个数放在它的正下方。

代码如下

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int main()
{
	int n,i,j;
	int a[500][500];
	while(~scanf("%d",&n))
	{
		memset(a,0,sizeof(a));
		int m=n*n-1,k=1;
		a[0][n/2]=k;
		i=0;j=n/2;
		while(m--)
		{
			if(a[(i-1+n)%n][(j+1)%n]==0)
			{
				i=(i-1+n)%n;
				j=(j+1)%n;
				a[i][j]=++k;
			}
			else
			{
				a[i+1][j]=++k;
				i=i+1;
			}
		}
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<n;j++)
			{
				printf(j==n-1?"%d\n":"%d ",a[i][j]);
			}
		}
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值