求解九宫格的Java_使用全排列方法解九宫格问题
packagecom.sitinspring;publicclassSquarePuzzle{/***?階數(shù)*/privateintn;/***?方陣數(shù)組*/privateInteger[]?arr;/***?平均值*/privateintaverage;publicSquarePuzzle(intn){this.n=n;//建立數(shù)組并得到平均值arr=newInteger[n*n];
average=0;for(inti=1;i<=n*n;i++){
arr[i-1]=i;
average+=i;
}
average=average/n;//遞歸查看permutation(arr,0,arr.length);
}privatevoidpermutation(Integer[]?arr,intstart,intend){if(start
permutation(arr,start+1,end);for(inti=start+1;i
Integer?temp;
temp=arr[start];
arr[start]=arr[i];
arr[i]=temp;
permutation(arr,start+1,end);
temp=arr[i];
arr[i]=arr[start];
arr[start]=temp;
}
}else{/*for(int?i=0;i
System.out.print(arr[i]);
}
System.out.print("\n");*/inti,sum=0;for(i=0;i
sum+=arr[i];
}if(sum!=average){return;
}//查看是否縱橫對角線值都相等checkAndPrint(arr);
}
}privatevoidcheckAndPrint(Integer[]?arr){
Integer[][]?arr2=newInteger[n][n];inti,j,sum;for(i=0;i
arr2[i][j]=arr[i*n+j];
}
}//橫for(i=0;i
sum=0;for(j=0;j
sum+=arr2[i][j];
}if(sum!=average){return;
}
}//縱for(i=0;i
sum=0;for(j=0;j
sum+=arr2[j][i];
}if(sum!=average){return;
}
}//對角線sum=0;for(i=0;i
sum+=arr2[i][i];
}if(sum!=average){return;
}//對角線sum=0;for(i=0;i
sum+=arr2[i][n-i-1];
}if(sum!=average){return;
}//最終打印for(i=0;i
System.out.print(arr2[i][j]+"\t");;
}
System.out.print("\n");;
}
System.out.print("\n");;
System.exit(0);
}publicstaticvoidmain(String[]?args){newSquarePuzzle(3);
}
}
總結
以上是生活随笔為你收集整理的求解九宫格的Java_使用全排列方法解九宫格问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 嵌套游标慢,oracle
- 下一篇: 小伙用 12 张图讲明白了 Redis