前言

对于程序员来说,用程序解决数学问题是最有趣的事情之一。本人研究了一个能够轻易计算九宫图的算法,并且用java语言编写程序得以实现。现将算法和代码公布,欢迎广大程序爱好者前来阅读、交流。

九宫图简介

九宫图是我国古老的数学问题,也是一种数字艺术,就是把1~9九个数字填到3行3列九个方格中,使其每一横、坚、斜行之和都等于15。如下图就是九宫图:

编程思想

要计算九宫图,我首先想到的是找数字规律。对于九宫图而言,以每个边角数字(如4)为首位,都能有3组不重复的数字组合的和为15。例如上图中以4为开头则有4、9、2,和4、3、8和 4、5、6三组数字之和为15。如果仅要求第一个数字是4,后两个数字可以颠倒位置,则这样的数字组合有6种。同理以中央数字为开头,在后两个数字可以颠倒位置的情况下,会有8个数字组合的和为15。利用这一规律,我们可以轻易得到九宫图中的4个拐角数字和1个中央数字,其他数字就可轻易计算出。

算法

1、创建全局的一个数组和一个int型变量分部用来存储4个边角数字和1个中央数字。设置标记数字d=0;
2、利用三层for循环将第一、第二、第三个数字均从1开始累加,到9为止,中间嵌套if判断语句保证三个数字不相等。
3、在for循环的最内层计算三个数字之和,如果等于15,则标记数字d自增1,表示已经找到一组和为15的数字组合。
4、在循环的最外层,也就是第一个数字不变,后面两个数字取任意不重复值取完之后,利用if语句进行判断,如果d的值自增到了6,则说明找到了边角数字,存入数组;如果d的值自增到了8,则说明得到了中央数字,需要赋值存储。如果d的值自增到了4,说明此时是每一行中间的数字,但是这个数字我们不需要存储。
5、每次d分别自增到4、6、8时,说明此时内部的两层循环已经结束,第一个数字即将自增1再重新开始内部的两层循环,此时需要将d的值重新归0,以便计算不同的首位数字的到和为15的数字组合个数。
6、当得到4个边角数字和1个中央数字之和,再计算每一行中间的数字就特别简单了,只需要用15减去两个就行。
7、所有数字就得到以后,就可以展示出来。

程序代码

package InterestingProgram ;
public class JiuGongTu {public static void main(String[] args) {// TODO Auto-generated method stubint d=0;int i=0;//创建int数组,用来存储4个边角数字int[] corner=new int[4];//center用来存储中央的数字int center = 0;for(int a=1;a<10;a++){           for(int b=1;b<10;b++){                if(a!=b){for(int c=1;c<10;c++){                      if(a!=c&&b!=c){int x=a+b+c;if(x==15){d++;}                                                 }                   }                   }                   }if(d==6){System.out.println("得到边角数字是"+a);corner[i]=a;i++;d=0;             }if(d==4){d=0;}if(d==8){System.out.println("得到中央数字是"+a);center=a;d=0;         }}//第一行中间的数字为int m1=15-corner[0]-corner[1];//最后一行中间的数字为int m2=15-corner[2]-corner[3];//左边列中间的数字为int m3=15-corner[0]-corner[2];//左边列中间的数字为int m4=15-corner[1]-corner[3];System.out.println("九宫图如下:");System.out.println(corner[0]+"  "+m1+"  "+corner[1]);System.out.println(m3+"  "+center+"  "+m4);System.out.println(corner[2]+"  "+m2+"  "+corner[3]);}}

运行效果

用java语言编写程序计算九宫图相关推荐

  1. C语言编写程序计算运费:f=p*w*s*(1-d)。(用switch语句实现)

    C语言编写程序计算运费:f=pws*(1-d).(用switch语句实现) s<250km 没有折扣 250<=s<500 2%折扣 500<=s<1000 5%折扣 1 ...

  2. 用C语言编写程序计算cos x 的近似值,输入精度 e 和 x,用下列公式求cos(x)的近似值...

    C语言 输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。 #include  //头文件置顶#include double fact(int n){\ C语言编写 ...

  3. [Java] MVC 编写程序计算净现值 2020.2.25 Java

    源代码如下: model层 package zlc.model;/*** * @author 信1705-1班赵路仓 * @version 1.0 */public class Data {priva ...

  4. c语言编写程序计算行列式值,求行列式的值,用C语言怎么写啊? 如何求行列式的值...

    导航:网站首页 > 求行列式的值,用C语言怎么写啊? 如何求行列式的值 求行列式的值,用C语言怎么写啊? 如何求行列式的值 相关问题: 匿名网友: 行列式计算公式知道吧,给你个源码参考,大一时写 ...

  5. 利用C语言编写程序计算数字测图中的三角高程实验

    先说缺陷:1.一测回的度分秒值需要先用计算器换算为度值才能进行运算: 2.使用的文件较多: 3.因为老师要求用公式将斜距转换为直线距离,所以计算步骤略多: 4.个别英文单词拼写有误: 5.没有储存单向 ...

  6. 用java语言编写程序,从键盘输入一个年份(如2016年)和一个月份(如2月),输出该月的天数

    ① package pack1; import java.util.*; public class ex2 { public static void main(String[] args) { Sca ...

  7. c语言编写程序计算行列式值,新手作品:行列式计算C语言版

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 对话     ControlHeightDecrease     Shift+Up Arrow     向上调整选定的控件或对话一个对话单位 对话     ...

  8. 用C语言编写程序计算对角线的和,C语言入门级代码 计算二维数组主对角线上的元素之和...

    镇场诗:吾心为他人,此智不私藏.学术有小成,愿帮大家忙. // #include void main(){ int i=0,j=0; int a[4][4]={{1,2,3,4},{1,2,3,4}, ...

  9. 模拟银行账户功能java_用JAVA语言编写程序,模拟银行账户功能。要有..._银行招聘考试_帮考网...

    wwnkar 2019-08-12 06:19 3712 public class 类名{ private String userID: //默认余额10元 private double balanc ...

最新文章

  1. L1-044 稳赢 (暴力法)
  2. 面试官:说说RabbitMQ 消费端限流、TTL、死信队列
  3. 是否保证Python列表的元素保持按插入顺序排列?
  4. Qt QGraphics体系及刷新机制介绍
  5. 阿里云500服务器内部错误,腾讯云服务器网站不能打开 提示内部错误http 500
  6. day14【前台】用户登录注册
  7. PCL之ubuntu安装CloudCompare
  8. 用tinypng插件创建gulp task压缩图片
  9. [华为机试真题][2014]63.等式变换
  10. 2021-06-09使用IAR软件进行TMS470程序刷写说明
  11. Hash表的时间复杂度为什么是O(1)?
  12. python docx创建表格
  13. 一篇文章,读懂9种优先的管理之道
  14. 「暑期训练」「基础DP」 Monkey and Banana (HDU-1069)
  15. 自然语言处理——谷歌BERT模型深度解析
  16. UE5 植被系统详解
  17. 关于 I/O 的五分钟法则
  18. python实现批量修改图片颜色
  19. 【深度学习】常见的提高模型泛化能力的方法
  20. 填坑之一 从零开始的神棍之路

热门文章

  1. springboot启动源码分析3-环境配置
  2. 路由和远程访问 连接被远程计算机终止,通过RRAS(路由和远程访问)进行PPPOE拨号连接总是出现连接接口时出现一个错误,连接被远程计算机终止...
  3. 免费的模拟贝斯合成器-Togu Audio Line TAL-Bassline Free WiN-MAC
  4. 求n以内的所有素数(质数)个数
  5. JAVA游戏土行孙_挖掘机的三种形态《非人学园》土行孙快速上手指南
  6. 【三】零基础入门深度学习:卷积神经网络基础之初识卷积
  7. 社区化会成就无线门户下一个高峰吗?
  8. 树上两两匹配问题(max、min)
  9. 悟空CRM java版(基于jfinal+vue+ElementUI的前后端分离CRM系统)
  10. git与repo区别?