6.7 魔方阵

6.7 魔方阵!横竖斜的数和相同。
//8   1   6
//3   5   7
//4   9   2
//总体上:
//以当前数的下一个数的位置的确定为目标,找出当前数的下一个数的位置的规律,来判断其位置!
//具体:
//(空间上理解为一个卷起来的球!)
//情况1,一般情况下(即不在第一行,也不在最后一列),则下一个数位于当前数的上一行,下一列!
//情况2,当前数位于第一行,则下一个数的行位于最后一行,列仍为当前数的下一列;
//情况3,当前数位于最后一列,则下一个数的列位于第一列;行仍为当前数的上一行;
//情况4,根据一般情况下的规律而判断的位置上已经有数,则下一位数放在当前数的下面!
#include<stdio.h>
#define n 3
int main()
{
	int a[100][100] = { 0 };	
	int prerow, precol, row=0, col=n/2; a[row][col] = 1;
	for (int i = 2; i <= n*n; i++)
	{
		//下一位数的的行和列的变化规律!
		row--;
		col++;
		//根据下一位数行和列变化后的情况确定位置!
		if (row < 0)//第0行的下一个数的位置!
			row = n - 1;
		if (row >= n)//最后1列的下一个数的位置!
			col = 0;
		if (a[row][col] != 0)//已有数!
		{
			row = prerow + 1;
			col = precol;
		}
		a[row][col] = i;//处理好行列位置后赋值
		prerow = row;
		precol = col;
	}
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
			printf("%-4d", a[i][j]);
		printf("\n");
	}
	return 0;
}


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值