幻魔方c++实现

#include "stdio.h" #define n 5 /* 幻魔方 实现步骤: 1.将数字1填入第1行的中间方格中,即(0,n/2)位置; 2.取刚插入的元素A的位置(i,j)的左上角位置元素B(i-1,j-1) 3.检查元素B的下标 - 若填充位置超出上边界,则修改为最下边的相应位置 - 若填充位置超出左边界,则修改为最右边的相应位置 4.若该位置已有数字,则填充位置修改为下一行,同一列位置 */ void SetXB(int * i,int * j) { if(*i<0) *i=n-1; if(*j<0) *j=n-1; } void hf() { int data[n][n],flag=0,i,j,num,prei,prej;//prei,prej用来记录上个元素 for(i=0;i<n;i++) for(j=0;j<n;j++) data[i][j]=-1; prei=i=0; prej=j=n/2; data[0][j]=1; for(num=2;num<=n*n;num++) { i=i-1; j=j-1;//取左上角元素 SetXB(&i,&j);//检查下标 while(data[i][j]!=-1)//检查新位置是否已有元素 { i=prei+1; j=prej; SetXB(&i,&j); } data[i][j]=num; prei=i; prej=j; } for(i=0;i<n;i++) { if(i>0) printf("/n"); for(j=0;j<n;j++) printf("%d ",data[i][j]); } } void main() { hf(); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值