package com.arvey.eventbank.crash;
import java.util.HashMap;
import java.util.HashSet;
* Map<1-5整数(亦做数值使用),两层嵌夽整型SET(两个数值,升序) key + sum(set) = 15
Map<Integer,Set<Set<Integer>>> nine = new HashMap<Integer,Set<Set<Integer>>>();
// a+b = sum, both a and b (beginNum ... 9)
public Set<Integer> getSets(int sum,int beginNum){
for(int x=beginNum;x<sum/2+1;x++){
for(int m=9;m>sum/2;m--){
if(m == 15-sum) continue;
res = new HashSet<Integer>();
public Set<Set<Integer>> getAllSetsByNum(int firNum){
Set<Set<Integer>> res = new HashSet<Set<Integer>>();
Set<Integer> aSet = getSets(15-firNum,i);
//get all groups, x+y+z = 15
public void initialNums(){
Set<Set<Integer>> aSet = getAllSetsByNum(i);
* 5位置被使用四次,1+5+9 2+5+8 3+5+7 4+5+6
* 1,3,7,9位置被使用三次 1+2+3 1+4+7 1+5+9
* 2,4,6,8位置被使用两次, 1+2+3 和 2+5+8
boolean isPos1379(Set<Set<Integer>> specialkey,Integer value){
for(Set<Integer> aset:specialkey){
if(aset.contains(Integer.valueOf( 10 - value))){
public void printJiuGG(){
/*确定5,1,2,3,4,7的位置上的数值,规则取Map里key最小的
* 位置5,只有5被使用四次,所以找出包涵Set最多的key就是5位置的元素
* 位置1,取key最小的,有3组数,不取有5的一组的两组,这五个数会放在,12347的位置
* 位置3,7, 在key = 1的嵌夽数据集中,找到另两相加等于10的数,一个放在3,另一个落在7
* 位置2,必须被引用两次的数据中,且不能在有5的一组数中
Set<Integer> keys = nine.keySet();//放入进有序,所以取第一个有三组数的key值,
Set<Set<Integer>> aSet = null;
aSet = (Set<Set<Integer>>)nine.get(key);
Set<Set<Integer>> pos1Set = (Set<Set<Integer>>)nine.get(pos1);
Set<Integer> pos123 = null;
Set<Integer> pos147 = null;
for(Set<Integer> as : pos1Set){
if(as.contains(Integer.valueOf(5)))
for(Integer aInt:pos123){
if(isPos1379(pos1Set,aInt)){
for(Integer aInt:pos147){
if(isPos1379(pos1Set,aInt)){
System.out.println("Print the Result: 1-2-3 : "+pos1+"-"+pos2+"-"+pos3);
System.out.println("Print the Result: 4-5-6 : "+pos4+"-"+5+"-"+(10-pos4));
System.out.println("Print the Result: 7-8-9 : "+pos7+"-"+(10-pos2)+"-"+(10-pos1));
public Map<Integer,Set<Set<Integer>>> getNine(){
public static void main(String[] args) {
// TODO Auto-generated method stub
JiuGG jiuGG = new JiuGG();
Set<Integer> keys = jiuGG.getNine().keySet();
System.out.println("Key :"+key);
Set<Set<Integer>> sets = (Set<Set<Integer>>)jiuGG.getNine().get(key);
for(Set<Integer> ele:sets){