标题: 幻方填空

#include<stdio.h>
int i1,i2,i3,i4,i5,i6,i7,i8,i9,i10;
int m[11];
int v[17]={0};
void check()
{   //行
 i1=16+ m[1]+ m[2]+ 13;
 i2=m[3]+m[4]+ 11+ m[5];
 i3=9+  m[6]+ m[7]+ m[8];
 i4=m[9]+15+  m[10]+ 1;
 //列
 i5=16+m[3]+9+m[9];
 i6=m[1]+m[4]+m[6]+15;
 i7=m[2]+11+m[7]+m[10];
 i8=13+m[5]+m[8]+1;
 //对角
 i9=16+m[4]+m[7]+1;
 i10=13+11+m[6]+m[9];
 if(i1==i2&&i1==i3&&i1==i4&&i1==i5&&i1==i6&&i1==i7&&i1==i8&&i1==i9&&i1==i10)
 {
  for(int j=1;j<=10;j++)
  {
   printf("%d ",m[j]); 
  }
  }
 }
 void out()
 {
   for(int i=1;i<=10;i++)
  {
   printf("%d ",m[i]);
  }
   printf("\n");
 }
void dfs(int n)
{
 if(n==11)
 {
 check();
 //out();
  return;
 }
 for(int i=1;i<=16;i++)
 {
  if(v[i]==0)
  {
   v[i]=1;
   m[n]=i;
   dfs(n+1);
   v[i]=0;
  }
 }
}
main()
{
 dfs(1);
 return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值