六角幻方

里面的*在编写的时候会自动编译成线,这里就用代码的格式把题目弄过来

 把 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);
}
}

最新文章

  1. 学习SpringMVC——拦截器
  2. chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]
  3. dos 批处理删除svn目录
  4. DWZ(JUI)的lookupGroup增加回调函数
  5. datagridview里面有combox避免双击两次的写法
  6. [Gauss]POJ2065 SETI
  7. pageControl设置不居中显示,居左或居右
  8. JSP SMARTUPLOAD组件:上传文件时同时获取表单参数
  9. attempting to bokeyaunrun eclipse useing the jre instead of jdk,to run eclipse using
  10. Java魔法堂:注解用法详解——@SuppressWarnings(转)
  11. iOS 登陆之使用ShareSDK
  12. 【重点突破】——two.js模拟绘制太阳月亮地球转动
  13. 2015 ICL, Finals, Div. 1 Ceizenpok’s formula(组合数取模,扩展lucas定理)
  14. Eclipse 安装Activiti插件(BPMN打开工具)
  15. [ASP.net教程]IIS服务器 远程发布(Web Deploy)配置
  16. socket练习--ssh
  17. ElasticSearch实践系列(一):安装
  18. docker dockerfile构建自己的tomcat镜像
  19. Struts2 简介图
  20. 关于Java的权限修饰符(public,private,protected,默认friendly)

热门文章

  1. python 基础知识6-文件操作
  2. css3盒子flex
  3. struts2 进阶--异常捕获机制
  4. spring源码解析之前置知识点
  5. spark机器学习从0到1基本数据类型之(二)
  6. 利用logrotate将mysql log截断
  7. scipy.sparse的一些整理
  8. web自动化之键盘操作
  9. Maven系列(二) -- 将开源库上传到maven仓库私服
  10. PIC单片机的i2c的程序