65-三阶魔幻方阵

#include<stdio.h>
/*
有一种方阵被称为“魔幻方阵”。所谓魔幻方阵是指在n*n的矩阵中填写1~n2这n2个数字,使得它的每一行、每一列以及两个对角线之和均相等。例如三阶魔幻方阵如下:

它的每一行、每一列以及两个对角线之和均为15。编写一个程序,打印出一种三阶的魔幻方阵。


*/




//判断这里的数字是否满足互不相同
int NotSame(int i,int j,int k,int l,int m,int n,int o,int p,int q){
if(i!=j&&i!=k&&i!=l&&i!=m&&i!=n&&i!=o&&i!=p&&i!=q&&
j!=k&&j!=l&&j!=m&&j!=n&&j!=o&&j!=p&&j!=q&&
k!=l&&k!=m&&k!=n&&k!=o&&k!=p&&k!=q&&
l!=m&&l!=n&&l!=o&&l!=p&&l!=q&&
m!=n&&m!=o&&m!=p&&m!=q&&
n!=o&&n!=p&&n!=q&&
o!=p&&o!=q&&
p!=q){
return 1;
}else{
return 0;
}
}
//判断这里面的数字是否满足条件 
int success(int i,int j,int k,int l,int m,int n,int o,int p,int q){
if(i+j+k==l+m+n&&i+j+k==o+p+q&&
i+l+o==j+m+p&&i+l+o==k+n+q&&
i+m+q==k+m+o){
return 1;
}else{
return 0;
}
}
//获取三阶魔幻方阵
void getfangzhen(){
int i,j,k,l,m,n,o,p,q;
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
for(k=1;k<=9;k++){
for(l=1;l<=9;l++){
for(m=1;m<=9;m++){
for(n=1;n<=9;n++){
for(o=1;o<=9;o++){
for(p=1;p<=9;p++){
for(q=1;q<=9;q++){

//如果各个数字都不相同 
if(NotSame(i,j,k,l,m,n,o,p,q)){
//如果满足条件 
if(success(i,j,k,l,m,n,o,p,q)){
printf("%4d%4d%4d\n",i,j,k);
printf("%4d%4d%4d\n",l,m,n); 
printf("%4d%4d%4d\n\n\n",o,p,q); 
} 
}
}
}
}
}
}

}
}
}
}
} 


/*好吧,我就输出一个三阶魔幻方阵吧*/ 
int main(void)
{
getfangzhen();

return 0;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会编程的阿强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值