java实现第五届蓝桥杯六角幻方
六角幻方
里面的*在编写的时候会自动编译成线,这里就用代码的格式把题目弄过来
把 1 2 3 ... 19 共19个整数排列成六角形状,如下:
* * *
* * * *
* * * * *
* * * *
* * *
要求每个直线上的数字之和必须相等。共有15条直线哦!
再给点线索吧!我们预先填好了2个数字,第一行的头两个数字是:15 13,参见图【p1.png】,黄色一行为所求。
请你填写出中间一行的5个数字。数字间用空格分开。
这是一行用空格分开的整数,请通过浏览器提交答案,不要填写任何多余的内容(比如说明性的文字等)
9 6 5 2 16

public class Main {
public static boolean[] used = new boolean[20];
public void swap(int[] A, int i, int j) {
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
public boolean check(int[] A, int step) {
int sum = A[0] + A[1] + A[2];
if(step >= 7) {
if(A[3] + A[4] + A[5] + A[6] != sum)
return false;
}
if(step >= 8)
if(A[0] + A[3] + A[7] != sum)
return false;
if(step >= 12) {
if(A[7] + A[8] + A[9] + A[10] + A[11] != sum)
return false;
if(A[2] + A[6] + A[11] != sum)
return false;
}
if(step >= 13)
if(A[1] + A[4] + A[8] + A[12] != sum)
return false;
if(step >= 16) {
if(A[12] + A[13] + A[14] + A[15] != sum)
return false;
if(A[1] + A[5] + A[10] + A[15] != sum)
return false;
}
if(step >= 17) {
if(A[2] + A[5] + A[9] + A[13] + A[16] != sum || A[7]+A[12]+A[16] != sum)
return false;
}
if(step >= 18)
if(A[3] + A[8] + A[13] + A[17] != sum || A[6] + A[10] + A[14] + A[17] != sum)
return false;
if(step >= 19) {
if(A[0]+A[4]+A[9]+A[14]+A[18] != sum || A[16] + A[17] + A[18] != sum || A[11] + A[15] + A[18] != sum)
return false;
}
return true;
}
public void dfs(int[] A, int step) {
if(check(A, step) == false)
return;
if(step == 19) {
for(int i = 0;i < A.length;i++)
System.out.print(A[i]+" ");
System.out.println();
return;
}
for(int i = 1;i <= 19;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[19];
A[0] = 15;
A[1] = 13;
A[2] = 10;
used[15] = true;
used[13] = true;
used[10] = true;
test.dfs(A, 3);
}
}
java实现第五届蓝桥杯六角幻方的更多相关文章
- java实现第五届蓝桥杯六角填数
六角填数 题目描述 如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不 ...
- java实现第五届蓝桥杯殖民地
殖民地 带着殖民扩张的野心,Pear和他的星际舰队登上X星球的某平原.为了评估这块土地的潜在价值,Pear把它划分成了M*N格,每个格子上用一个整数(可正可负)表示它的价值. Pear要做的事很简单- ...
- java实现第五届蓝桥杯LOG大侠
LOG大侠 atm参加了速算训练班,经过刻苦修炼,对以2为底的对数算得飞快,人称Log大侠. 一天,Log大侠的好友 drd 有一些整数序列需要变换,Log大侠正好施展法力- 变换的规则是: 对其某个 ...
- java实现第五届蓝桥杯生物芯片
生物芯片 X博士正在研究一种生物芯片,其逻辑密集度.容量都远远高于普通的半导体芯片. 博士在芯片中设计了 n 个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮. 这些光源的 ...
- java实现第五届蓝桥杯供水设施
供水设施 X星球的居民点很多.Pear决定修建一个浩大的水利工程,以解决他管辖的N个居民点的供水问题.现在一共有N个水塔,同时也有N个居民点,居民点在北侧从1号到N号自西向东排成一排:水塔在南侧也从1 ...
- java实现第五届蓝桥杯排列序数
排列序数 如果用a b c d这4个字母组成一个串,有4!=24种,如果把它们排个序,每个串都对应一个序号: abcd 0 abdc 1 acbd 2 acdb 3 adbc 4 adcb 5 bac ...
- java实现第五届蓝桥杯幂一矩阵
幂一矩阵 天才少年的邻居 atm 最近学习了线性代数相关的理论,他对"矩阵"这个概念特别感兴趣.矩阵中有个概念叫做幂零矩阵.对于一个方阵 M ,如果存在一个正整数 k 满足 M^k ...
- java实现第五届蓝桥杯斐波那契
斐波那契 标题:斐波那契 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) .... (x>2) 对于给定的整数 ...
- java实现第五届蓝桥杯神奇算式
神奇算式 题目描述 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成. 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求 ...
随机推荐
- ThinkPad BIOS
ThinkPad-BIOS 如有问题指出 ~谢谢
- java -> StringBuffer与StringBuilder类
字符串缓冲区 StringBuffer类 在学习String类时,API中说字符串缓冲区支持可变的字符串,什么是字符串缓冲区呢?接下来我们来研究下字符串缓冲区. 查阅StringBuffer的API, ...
- Sentinel源码解析一(流程总览)
引言 Sentinel作为ali开源的一款轻量级流控框架,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳定性.相比于Hystrix,Sentinel的设计更加简 ...
- Redis学习笔记(十二) 复制(上)
偷个懒,晚上工作忙的太晚,整个复制功能的内容还没有写完,这里先说一下复制功能的简单应用. 在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制另一个服务器, ...
- 2.3 Go内置函数
内置函数 Go 语言拥有一些不需要进行导入操作就可以使用的内置函数.它们有时可以针对不同的类型进行操作,例如:len.cap 和 append,或必须用于系统级的操作,例如:panic.因此,它们需要 ...
- ABAP基础3:OPENSQL
select result from source where condition group by fileds having condition order by fields into targ ...
- 关于MySQL数据被删除后空间重用的问题实验
以前知道,MySQL在通过delete语句删除数据后,空间并不会被腾出,而只是在数据文件中被标记为已删除,除非执行optimize table.前两天听说,虽然delete数据后硬盘空间不会被腾出,但 ...
- python基本数据类型:字符串及其方法(二)
格式化类 方法join() #join()用指定字符每间隔拼接字符串 name='miku' name1=' '.join(name) print(name1) 方法center() #center( ...
- (STL初步)不定长数组:vector
STL是指C++的标准模板库.(存储着一些常用的算法和容器) vector是一个不定长数组.它把一些常用的操作”封装“在vector类型内部. 例如,a是一个vector.1对元素的操作有,可以用a. ...
- flatbuffer介绍和用法
介绍 flatbuffer是google发布的一个跨平台序列化框架具有如下特点 1.对序列化的数据不需要打包和拆包 2.内存和效率速度高,扩展灵活 3.代码依赖较少 4.强类型设计,编译期即可完成类型 ...