反幻方

题目描述

我国古籍很早就记载着

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. 1058 A+B in Hogwarts (20分)

    1058 A+B in Hogwarts (20分) 题目: If you are a fan of Harry Potter, you would know the world of magic h ...

  2. Linux中的vi编辑器使用

    总是忘记,我就谢谢 touch XXX文件名 vi XXX文件名 敲击 i 进入编辑模式 敲击ESC 退出编辑模式 退出编辑模式后 输入:wq!保存并退出 输入:q!不保存退出 查看文件:cat XX ...

  3. es7,8 临门一脚。

    ES7 1.Array.prototype.includes() includes()作用,是查找一个值在不在数组里,若是存在则返回true,不存在返回false. 1.基本用法: ['a', 'b' ...

  4. 14.2 Go性能优化

    14.2 Go性能优化 优化手段 1.减少HTTP请求数,合并CSS.JS.图片 2.使用CDN,就近访问 3.启用nginx gzip压缩,降低传输内容大小 4.优化后端api性能 api服务性能优 ...

  5. 运行web容器实例

  6. linux DRM/KMS 测试工具 modetest、kmscude、igt-gpu-tools (二)

    kmscube   kmscube is a little demonstration program for how to drive bare metal graphics without a c ...

  7. IIS 报 :HTTP Error 503. The service is unavailable.

    打开IIS 找到你对应的网站名称然后你会发现应用池停止了 点击你对应的网站右键点击启动既可

  8. ArrayList简介

    ArrayList简介 ArrayList以数组为底层数据结构的集合,是一个动态的数组队列,就是说该类的容量可以增长,与一般的数组不同. public class ArrayList<E> ...

  9. JSP+SSM+Mysql实现的图书馆预约占座管理系统

    项目简介 项目来源于:https://gitee.com/gepanjiang/LibrarySeats 因原gitee仓库无数据库文件且存在水印,经过本人修改,现将该仓库重新上传至个人gitee仓库 ...

  10. Redis详解(九)------ 哨兵(Sentinel)模式详解

    在上一篇博客----Redis详解(八)------ 主从复制,我们简单介绍了Redis的主从架构,但是这种主从架构存在一个问题,当主服务器宕机,从服务器不能够自动切换成主服务器,为了解决这个问题,我 ...