四阶幻方

把1~16的数字填入4x4的方格中,使得行、列以

及两个对角线的和都相等,满足这样的特征时称

为:四阶幻方。

四阶幻方可能有很多方案。如果固定左上角为1

,请计算一共有多少种方案。
比如:
1 2 15 16
12 14 3 5
13 7 10 4
8 11 6 9

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

就可以算为两种不同的方案。

请提交左上角固定为1时的所有方案数字,不要

填写任何多余内容或说明文字。

答案:416

import java.util.ArrayList;public class Main {public static boolean[] used = new boolean[17];public static ArrayList<String> list = new ArrayList<String>();public static int count = 0;public boolean check(int[] A, int step) {if(step >= 4)if(A[0] + A[1] + A[2] + A[3] != 34)return false;if(step >= 8)if(A[4] + A[5] + A[6] + A[7] != 34)return false;if(step >= 12)if(A[8] + A[9] + A[10] + A[11] != 34)return false;if(step >= 13)if(A[0] + A[4] + A[8] + A[12] != 34 || A[3] + A[6] + A[9] + A[12] != 34)return false;if(step >= 14)if(A[1] + A[5] + A[9] + A[13] != 34)return false;if(step >= 15)if(A[2] + A[6] + A[10] + A[14] != 34)return false;if(step >= 16)if(A[3] + A[7] + A[11] + A[15] != 34 || A[0] + A[5] + A[10] + A[15] != 34)return false;return true;}public void dfs(int[] A, int step) {if(check(A, step) == false)return;if(step == 16) {StringBuffer s = new StringBuffer("");for(int i = 0;i < A.length;i++)s.append(A[i]);if(!list.contains(s.toString())) {list.add(s.toString());count++;}return;}for(int i = 2;i <= 16;i++) {if(used[i] == false) {used[i] = true;A[step] = i;dfs(A, step + 1);used[i] = false;}}}public static void main(String[] args) {Main test = new Main();int[] A = new int[16];A[0] = 1;used[1] = true;test.dfs(A, 1);System.out.println(count);}
}

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

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

    转载请注明出处:http://www.cnblogs.com/zhishoumuguinian/p/8395458.html 把1~16的数字填入4x4的方格中,使得行.列以及两个对角线的和都相等,满 ...

  2. java实现第六届蓝桥杯穿越雷区

    穿越雷区 题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废. 某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能 ...

  3. java实现第六届蓝桥杯生命之树

    生命之树 生命之树 在X森林里,上帝创建了生命之树. 他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值. 上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点 ...

  4. java实现第六届蓝桥杯饮料换购

    饮料换购 饮料换购 乐羊羊饮料厂正在举办一次促销优惠活动.乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去,但不允许赊账. 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么, ...

  5. java实现第六届蓝桥杯循环节长度

    循环节长度 两个整数做除法,有时会产生循环小数,其循环部分称为:循环节. 比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位. 下面的方法,可以 ...

  6. java实现第六届蓝桥杯立方体自身

    立方变自身 题目描述 观察下面的现象,某个数字的立方,按位累加仍然等于自身. 1^3 = 1 8^3 = 512 5+1+2=8 17^3 = 4913 4+9+1+3=17 - 请你计算包括1,8, ...

  7. java实现第六届蓝桥杯熊怪吃核桃

    熊怪吃核桃 题目描述 森林里有一只熊怪,很爱吃核桃.不过它有个习惯,每次都把找到的核桃分成相等的两份,吃掉一份,留一份.如果不能等分,熊怪就会扔掉一个核桃再分.第二天再继续这个过程,直到最后剩一个核桃 ...

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

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

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

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

最新文章

  1. [C1] 优化 C1FlexGrid 单元格边框
  2. Magento 获取当前店铺信息(首页,类别,地址等)
  3. 算天数什么时候加一什么时候不加一_陌陌加公会不加公会的区别?
  4. c++语言取整为什么要加0.5_C/C++之取整函数
  5. POJ-1699 Best Sequence 状态压缩DP
  6. “深入浅出”是什么导致不能以操作系统用户身份连接到数据库
  7. android imagebutton 设置边框,【Android技巧】ImageButton 去边框 添加按下效果
  8. 苹果绕过ID_苹果iphone绕ID教程
  9. 学习ectouch之文件结构
  10. 自动驾驶车辆仿真模拟软件盘点
  11. Vue-01 —创建一个Vue实例
  12. android q mix3,Android Q+5G 小米MIX3现场播放8K视频
  13. CM311-3_YST_晨星MSO9385_2+8_安卓9.0_TTL免费升级固件
  14. Algorithm:矩阵中“块”的个数
  15. vba 汉字转拼音 -- wps office
  16. 数据结构:手把手教你写代码系列总结与说明
  17. 【Python3之面向对象的程序设计】
  18. 微信小程序:喝酒娱乐小游戏助力神器
  19. python写文字冒险游戏手机版_用128行代码实现一个文字冒险游戏
  20. 打开Visual Studio Community 2017 报出“许可证已过期”

热门文章

  1. 数值分析-顺序高斯消去法C语言代码
  2. linux 守护进程编写
  3. VUE复习深入学习10.可复用性 组合 mixin!!!!!!
  4. UWB室内定位技术,定位精度高抗干扰能力强,超宽带技术发展
  5. 数学知识(基础数论)
  6. linux上freetype2安装编译和使用
  7. 虚拟服务器kvm esxi选择,kvm系统(esxi和pve哪个好)
  8. 辛与欣(2008.12.31)
  9. 福禄克北京代理是哪一家?
  10. 利用客服消息和模板消息实现微信群发(突破群发接口的上限)