转载请注明出处:http://www.cnblogs.com/zhishoumuguinian/p/8395458.html

把1~16的数字填入4x4的方格中,使得行、列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方。四阶幻方可能有很多方案。如果固定左上角为1,请计算一共有多少种方案。

比如:            以及:
1 2 15 16            1 12 13 8
12 14 3 5            2 14 7 11
13 7 10 4            15 3 10 6
8 11  6  9            16 5  4  9

就可以算为两种不同的方案。请提交左上角固定为1时的所有方案数字,不要填写任何多余内容或说明文字。

答案:416

 1 #include <iostream>
 2 #include <fstream>
 3 #include <iomanip>
 4 using namespace std;
 5 int a[5][5];
 6 int flag[20]={0};
 7 int ans=0;
 8 bool Check(int x, int y)
 9 {
10     if(x<3)
11     {
12         if(y<3) return true;
13         if(a[x][0]+a[x][1]+a[x][2]+a[x][3]==34)
14             return true;
15         return false;
16     }
17     else
18     {
19         if(y==0)
20             if((a[0][0]+a[1][0]+a[2][0]+a[3][0]!=34)||(a[0][3]+a[1][2]+a[2][1]+a[3][0]!=34)) return false;
21         if(y==1||y==2)
22             if(a[0][y]+a[1][y]+a[2][y]+a[3][y]!=34) return false;
23         if(y==3)
24             if((a[0][y]+a[1][y]+a[2][y]+a[3][y]!=34)||(a[0][0]+a[1][1]+a[2][2]+a[3][3])!=34) return false;
25         return true;
26     }
27 }
28
29
30 void dfs(int x, int y)
31 {
32     if(x==4)
33     {
34         ans++;
35         return;
36     }
37     for(int num=1; num<=16; num++)
38     {
39         if(flag[num]==0)
40         {
41             a[x][y]=num;
42             flag[num]=1;
43             if(Check(x,y))
44             {
45                 if(y<3) dfs(x,y+1);
46                 else dfs(x+1,0);
47             }
48             flag[num]=0;
49         }
50     }
51
52
53 }
54
55 int main()
56 {
57     flag[1]=1;
58     a[0][0]=1;
59     dfs(0,1);
60     cout<<ans;
61
62     return 0;
63 }

闲的把所有四阶幻方都打印出来了,感兴趣可以看一下《四阶幻方所有可能穷举》。

转载于:https://www.cnblogs.com/zhishoumuguinian/p/8395458.html

第六届蓝桥杯 四阶幻方相关推荐

  1. java实现第六届蓝桥杯四阶幻方

    四阶幻方 把1~16的数字填入4x4的方格中,使得行.列以 及两个对角线的和都相等,满足这样的特征时称 为:四阶幻方. 四阶幻方可能有很多方案.如果固定左上角为1 ,请计算一共有多少种方案. 比如: ...

  2. 第六届蓝桥杯大赛个人赛决赛(C/C++大学B组)

    第六届蓝桥杯大赛个人赛决赛(C/C++大学B组) 第一题 积分之迷(15分) 小明开了个网上商店,卖风铃.共有3个品牌:A,B,C. 为了促销,每件商品都会返固定的积分. 小明开业第一天收到了三笔订单 ...

  3. [第六届蓝桥杯省赛C++B组]三羊献瑞

    题目来源:第六届蓝桥杯省赛C++B组 算法标签:全排列 题目描述: 观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写"三羊献瑞"所代表的4 ...

  4. 第六届蓝桥杯大赛个人赛省赛Java B组真题

    文章目录 第六届蓝桥杯大赛个人赛省赛Java B组真题 1. 三角形面积(结果填空) 2. 立方自变身(结果填空) 3. 三羊献瑞(结果填空) 4. 循环节长度(代码填空) 5. 九数组分数(代码填空 ...

  5. 第六届蓝桥杯真题总结

    第六届蓝桥杯真题总结 第一题:奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求 ...

  6. 2015年第六届蓝桥杯C/C++B组省赛题目解析

    1.奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利. 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是 ...

  7. 2015第六届蓝桥杯全国软件大赛省赛(预赛)总结

    这是我上大学以来第一次自发的写总结,这也许意味着我对大学的看法和接下来的大学生活都将有所改变吧.首先说说引导我写这篇总结的"人物"吧,RUI,从大一开始便是同学,直到大三成为了舍友 ...

  8. 【蓝桥杯】第六届蓝桥杯大赛个人赛省赛(软件类) Java大学C组 -题目与答案

    第六届蓝桥杯大赛个人赛省赛(软件类) Java大学C组 -题目与答案 1.结果填空(满分3分) 2.结果填空(满分5分) 3.结果填空(满分9分) 4.代码填空(满分11分) 5.代码填空(满分15分 ...

  9. 2015年第六届蓝桥杯 - 省赛 - Java大学B组 - A. 三角形面积

    三角形面积 如[图1]所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字. Ideas 这道题跟2018年第九届蓝桥杯 - ...

最新文章

  1. 激光雷达lidar与点云数据
  2. js实现给a href= href赋值
  3. python 回文数
  4. netbeans卸载 linux,NetBeans_6.1自己使用。(linux-ubuntu下)
  5. pythonurllib微博登录怎么删_Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据...
  6. 人们常说的微型计算机简称为 机,(精华版)国家开放大学电大专科《计算机文化基础》网络课单项选择题题库及答案...
  7. MATLAB中空间滤波卷积有什么作用
  8. BZOJ-2768: [JLOI2010]冠军调查(超级裸的最小割)
  9. PyQT5一起学做图书管理系统(2)初始化数据库
  10. 2019-CS224n-Assignment3
  11. ListView分页操作
  12. 如何使用树莓派 连接千寻开发板开发高精度应用
  13. 每个人都会有的第一次
  14. git clone报错Could not resolve proxy : proxy-szn
  15. 被修饰成单栋的倾斜摄影处理思路
  16. python量化策略——大类资产配置模型(最小方差模型)
  17. CSS文字超出用省略号...鼠标悬停显示全部文字
  18. live555服务器测试
  19. python文章抄袭检测_用Python写了个检测文章抄袭,详谈去重算法原理
  20. 一个数的亲和数iiic++_小学1-6年级数学公式和定律

热门文章

  1. RISCV 特权级拾遗
  2. 专题六数值微积分与方程求解
  3. 【计算方法】高斯消去法(线性方程组的求解)
  4. [HECTF 2022]—Web WirteUp
  5. 全球月活用户4年破10亿,TikTok的3大底层逻辑
  6. EditText 限制输入整数和小数 的位数
  7. Spring教程(由浅入深)
  8. winform直接控制云台_大疆手机云台 DJI OM 4 正式发布:磁吸拍出吸引力
  9. Java 爬虫-谷歌商店(Google play)--应用的版本号
  10. 扫描线填充多边形算法详解与代码