反幻方

题目描述

我国古籍很早就记载着

2 9 4

7 5 3

6 1 8

这是一个三阶幻方。每行每列以及对角线上的数字相加都相等。

下面考虑一个相反的问题。

可不可以用 1~9 的数字填入九宫格。

使得:每行每列每个对角线上的数字和都互不相等呢?

这应该能做到。

比如:

9 1 2

8 4 3

7 5 6

你的任务是搜索所有的三阶反幻方。并统计出一共有多少种。

旋转或镜像算同一种。

比如:

9 1 2

8 4 3

7 5 6

7 8 9

5 4 1

6 3 2

2 1 9

3 4 8

6 5 7

等都算作同一种情况。

请提交三阶反幻方一共多少种。这是一个整数,不要填写任何多余内容。

public class Main {
static int ans = 0; public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
f(a, 0, a.length - 1);
System.out.println(ans / 8);
} public static void f(int[] a, int start, int end) {
if (start == 6) {
int sum1 = a[0] + a[1] + a[2];
int sum2 = a[3] + a[4] + a[5];
if (sum1 == sum2)
return;
} else if (start == 7) {
int sum1 = a[0] + a[1] + a[2];
int sum2 = a[3] + a[4] + a[5];
int sum3 = a[2] + a[4] + a[6];
int sum4 = a[0] + a[3] + a[6];
if (sum1 == sum2 || sum1 == sum3 || sum1 == sum4 || sum2 == sum3 || sum2 == sum4 || sum3 == sum4)
return;
} else if (start == 8) {
int sum1 = a[0] + a[1] + a[2];
int sum2 = a[3] + a[4] + a[5];
int sum3 = a[2] + a[4] + a[6];
int sum4 = a[0] + a[3] + a[6];
int sum5 = a[1] + a[4] + a[7];
int sum6 = a[2] + a[5] + a[8];
int sum7 = a[0] + a[4] + a[8];
int sum8 = a[6] + a[7] + a[8];
if (sum1 == sum2 || sum1 == sum3 || sum1 == sum4 || sum1 == sum5 || sum1 == sum6 || sum1 == sum7
|| sum1 == sum8 || sum2 == sum3 || sum2 == sum4 || sum2 == sum5 || sum2 == sum6 || sum2 == sum7
|| sum2 == sum8 || sum3 == sum4 || sum3 == sum5 || sum3 == sum6 || sum3 == sum7 || sum3 == sum8
|| sum4 == sum5 || sum4 == sum6 || sum4 == sum7 || sum4 == sum8 || sum5 == sum6 || sum5 == sum7
|| sum5 == sum8 || sum6 == sum7 || sum6 == sum8 || sum7 == sum8)
return;
ans++;
return;
}
for (int i = start; i <= end; i++) {
{
int temp = a[start];
a[start] = a[i];
a[i] = temp;
}
f(a, start + 1, end);
{
int temp = a[start];
a[start] = a[i];
a[i] = temp;
}
}
}
} // 答案:3120

java实现第七届蓝桥杯反幻方的更多相关文章

  1. java实现第七届蓝桥杯冰雹数

    题目8.冰雹数 题目描述 任意给定一个正整数N, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复. 通过观察发现,这个数字会一会儿上升 ...

  2. java实现第七届蓝桥杯七星填数

    七星填数 如图[图1.png]所示. 在七角星的14个节点上填入1~14 的数字,不重复,不遗漏. 要求每条直线上的四个数字之和必须相等. 图中已经给出了3个数字. 请计算其它位置要填充的数字,答案唯 ...

  3. java算法 第七届 蓝桥杯B组(题+答案) 10.压缩变换

    10.压缩变换  (程序设计) 小明最近在研究压缩算法.他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比.然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些 ...

  4. java算法 第七届 蓝桥杯B组(题+答案) 9.取球博弈

    9.取球博弈  (程序设计) 两个人玩取球的游戏.一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目.如果无法继续取球,则游戏结束.此时,持有奇数个球的一方获胜.如果两人都是 ...

  5. Java实现第七届蓝桥杯国赛 赢球票

    标题:赢球票 某机构举办球票大奖赛.获奖选手有机会赢得若干张球票. 主持人拿出 N 张卡片(上面写着 1~N 的数字),打乱顺序,排成一个圆圈. 你可以从任意一张卡片开始顺时针数数: 1,2,3- 如 ...

  6. java实现第七届蓝桥杯四平方和

    四平方和 四平方和 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^ ...

  7. java实现第七届蓝桥杯有奖竞猜

    有奖竞猜 题目描述 小明很喜欢猜谜语. 最近,他被邀请参加了X星球的猜谜活动. 每位选手开始的时候都被发给777个电子币. 规则是:猜对了,手里的电子币数目翻倍, 猜错了,扣除555个电子币, 扣完为 ...

  8. java实现第七届蓝桥杯机器人塔

    机器人塔 X星球的机器人表演拉拉队有两种服装,A和B. 他们这次表演的是搭机器人塔. 类似: A B B A B A A A B B B B B A B A B A B B A 队内的组塔规则是: A ...

  9. java实现第七届蓝桥杯凑平方数

    凑平方数 把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的. 比如:0, 36, 5948721 再比如: 1098524736 1, 25, 6390784 0, 4, 28 ...

随机推荐

  1. 2018-06-17 js数组

    数组的定义:① var arr=new Array(xx,xx,xx); ②var arr=[yy,yy,,yy]; 数组的查看:arr[x]; 数组的修改:arr[x]=xx; 数组的遍历:①for ...

  2. React面试题汇总

    1.如何理解React中的组件间数据传递? ①父-子  通过props传递 ②子-父  在父中创建一个可以修改state的方法,之后把这个方法通过props传递给子,在子中调用这个方法 从而达到修改父 ...

  3. 浅谈JQuery

    一.什么是JQuery? JQuery是第三方开发的执行DOM操作的极简化的函数库. 执行DOM操作:JQuery还是在执行DOM操作 1.学习JQuery还是在学习DOM 2.五件事:增删改查 事件 ...

  4. 使用urllib

    urlopen的基本用法: 工具为:python3(windows) 其完整表达式为: urllib.request.urlopen(url, data=None, [timeout, ]*, caf ...

  5. 【网络安全】【02】Windows系统如何屏蔽自动更新

    一.win键 + r   ==>  输入  services.msc 二. win键 + r   ==>  输入  gpedit.msc PS:我的电脑基本两年没有更新过了  -_-

  6. CentOS7初始化服务器开发环境——根据个人习惯而定

    目录 修改hostname 创建个人账户和组 修改hostname 编辑主机名称,注意:执行以下指令,无需重启服务器,因为此指令实时写入linux 内核 hostnamectl --static se ...

  7. tomcat依赖--linux

    https://tomcat.apache.org/download-90.cgi 下载 3,解压到usr/locat/tomcat 创建usr/local/tomcat Mkdir /usr/loc ...

  8. thymeleaf将对象ModelList数据抛到HTML页面

  9. zookeeper安装部署步骤

    安装步骤 本安装教程,采用zookeeper 3.6.1 装java 下载zk包,分发到各个机器 确定或创建一个zookeeper的数据存放路径,并在该路径下创建一个myid文件,其中设置当前zook ...

  10. 附件2:async/await

    在实际开发中总会遇到许多异步的问题,最常见的场景便是接口请求之后一定要等一段时间才能得到结果,如果遇到多个接口前后依赖,那么问题就变得复杂.大家都一直在尝试使用更好的方案来解决这些问题.最开始只能利用 ...