c语言编程魔方阵,魔方阵编程

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

//用循环"硬算"4×4魔方阵

#include

int B[]={0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//1:空闲,0:已用

#define a m[0][0]

#define b m[0][1]

#define c m[0][2]

#define d m[0][3]

#define e m[1][0]

#define f m[1][1]

#define g m[1][2]

#define h m[1][3]

#define i m[2][0]

#define t m[2][1]

#define u m[2][2]

#define v m[2][3]

#define w m[3][0]

#define x m[3][1]

#define y m[3][2]

#define z m[3][3]

main()

{

int m[4][4],j,k;

int OK(int[][4]);

for(a=1;a<=16;a++){B[a]=0;

for(b=1;b<=16;b++)if(B[b]){B[b]=0;

for(c=1;c<=16;c++)if(B[c]){B[c]=0;

for(d=1;d<=16;d++)if(B[d]){B[d]=0;if(a+b+c+d==34)//

for(e=1;e<=16;e++)if(B[e]){B[e]=0;

for(f=1;f<=16;f++)if(B[f]){B[f]=0;

for(g=1;g<=16;g++)if(B[g]){B[g]=0;

for(h=1;h<=16;h++)if(B[h]){B[h]=0;if(e+f+g+h==34)//

for(i=1;i<=16;i++)if(B[i]){B[i]=0;

for(t=1;t<=16;t++)if(B[t]){B[t]=0;

for(u=1;u<=16;u++)if(B[u]){B[u]=0;

for(v=1;v<=16;v++)if(B[v]){B[v]=0;if(i+t+u+v==34)//

for(w=1;w<=16;w++)if(B[w]){B[w]=0;

for(x=1;x<=16;x++)if(B[x]){B[x]=0;

for(y=1;y<=16;y++)if(B[y]){B[y]=0;

for(z=1;z<=16;z++)if(B[z])if(w+x+y+z==34)//

if(OK(m)){printf("\nsolution:\n");

for(j=0;j<4;j++,printf("\n"))

for(k=0;k<4;k++)printf("%3d",m[j][k]);}

B[y]=1;}

B[x]=1;}

B[w]=1;}

B[v]=1;}

B[u]=1;}

B[t]=1;}

B[i]=1;}

B[h]=1;}

B[g]=1;}

B[f]=1;}

B[e]=1;}

B[d]=1;}

B[c]=1;}

B[b]=1;}

B[a]=1;}

}

int OK(int n[][4])

{

int j,k,s;

// for(j=0;j<4;j++){

// for(s=k=0;k<4;k++)

// s+=n[j][k];

// if(s-34)return 0;}

for(j=0;j<4;j++){

for(s=k=0;k<4;k++)

s+=n[k][j];

if(s-34)return 0;}

if(n[0][0]+n[1][1]+n[2][2]+n[3][3]-34)return 0;

return !(n[3][0]+n[2][1]+n[1][2]+n[0][3]-34);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值