用java语言编写程序计算九宫图

前言

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

九宫图简介

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

《用java语言编写程序计算九宫图》

编程思想

要计算九宫图,我首先想到的是找数字规律。对于九宫图而言,以每个边角数字(如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 stub
		int 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语言编写程序计算九宫图》

    原文作者:九宫图算法
    原文地址: https://blog.csdn.net/weixin_43274704/article/details/84196303
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞