package cn.edu.csu;
public class Grid99 {
// private static String[] str = new String[362880];
// private static int i = 0;
/**
* @param args
* 得到所有行不相同的序列
*/
public String[] creatDifString(){
int k1, k2, k3, k4, k5, k6, k7, k8, k9;
String[] str = new String[362880];
int i = 0;
for(k1 = 1; k1 <= 9; k1++){
for(k2 =1; k2 <= 9; k2++){
if(k2 ==k1){
continue;
}
for(k3 = 1; k3 <= 9; k3++){
if(k3 ==k1 ||k3 ==k2){
continue;
}
for(k4 = 1; k4 <=9; k4++){
if(k4 == k1 ||k4 ==k2 ||k4==k3){
continue;
}
for(k5 = 1; k5 <=9; k5++){
if(k5 == k1 ||k5 == k2 ||k5 ==k3 ||k5 ==k4){
continue;
}
for(k6 = 1; k6<=9; k6++){
if(k6 == k1 || k6 == k2 || k6 ==k3 ||k6 ==k4 ||k6 ==k5){
continue;
}
for(k7 = 1; k7 <=9; k7++){
if(k7 ==k1 || k7 == k2 || k7 == k3 || k7 ==k4 || k7 ==k5 ||k7 == k6){
continue;
}
for(k8 = 1; k8 <= 9; k8++){
if(k8 == k1 ||k8 ==k2 || k8 == k3 ||k8 ==k4 ||
k8 == k5 || k8 == k6 || k8 == k7){
continue;
}
for(k9 = 1; k9 <= 9; k9++){
if(k9 == k1 || k9 == k2 || k9 == k3 || k9 == k4 ||
k9 == k5 || k9 == k6 || k9 == k7 || k9 == k8){
continue;
}
str[i] = String.valueOf(k1) + String.valueOf(k2) + String.valueOf(k3) +
String.valueOf(k4) + String.valueOf(k5) + String.valueOf(k6) +
String.valueOf(k7) + String.valueOf(k8) + String.valueOf(k9);
i++;
}
}
}
}
}
}
}
}
}
return str;
}
public boolean getDifString(String str1, String str2, String str3, String str4, String str5,
String str6, String str7, String str8, String str9){
boolean flag = true;
String[] newstr = new String[9];
/**
* 按列组成九个字符串
*/
for(int i = 0; i < 9; i++){
char[] ch = {str1.charAt(i) , str2.charAt(i) , str3.charAt(i) , str4.charAt(i) ,
str5.charAt(i) , str6.charAt(i) , str7.charAt(i) , str8.charAt(i) , str9.charAt(i)};
newstr[i] = new String(ch);
}
for(int i = 0; i < 9; i++){
if(ColumnHasSame(newstr[i])){
flag = false;
break;
}
}
return flag;
}
public boolean ColumnHasSame(String str){
boolean flag = false;
out:
for(int i = 0; i < str.length() - 1; i++){
for(int j = i + 1; j < str.length(); j++){
if(str.charAt(i) == str.charAt(j)){
flag = true;
break out;
}
}
}
return flag;
}
public static void main(String[] args){
String[] str = new Grid99().creatDifString();
int N = 326880;
int M = 1 , num = 1;
int k1, k2, k3, k4, k5, k6, k7, k8, k9;
out:
for(k1 = 0; k1 < N; k1++){
for(k2 =0; k2 < N; k2++){
if(k2 == k1){
continue;
}
for(k3 = 0; k3 < N; k3++){
if(k3 ==k1 ||k3 ==k2){
continue;
}
for(k4 = 0; k4 < N; k4++){
if(k4 == k1 ||k4 ==k2 ||k4==k3){
continue;
}
for(k5 = 0; k5 < N; k5++){
if(k5 == k1 ||k5 == k2 ||k5 ==k3 ||k5 ==k4){
continue;
}
for(k6 = 0; k6< N; k6++){
if(k6 == k1 || k6 == k2 || k6 ==k3 ||k6 ==k4 ||k6 ==k5){
continue;
}
for(k7 = 0; k7 < N; k7++){
if(k7 ==k1 || k7 == k2 || k7 == k3 || k7 ==k4 || k7 ==k5 ||k7 == k6){
continue;
}
for(k8 = 0; k8 < N; k8++){
if(k8 == k1 ||k8 ==k2 || k8 == k3 ||k8 ==k4 ||
k8 == k5 || k8 == k6 || k8 == k7){
continue;
}
for(k9 = 0; k9 < N; k9++){
if(k9 == k1 || k9 == k2 || k9 == k3 || k9 == k4 ||
k9 == k5 || k9 == k6 || k9 == k7 || k9 == k8){
continue;
}
if(num >M){
break out;
}
if(new Grid99().getDifString(str[k1], str[k2], str[k3], str[k4], str[k5],
str[k6], str[k7], str[k8], str[k9])){
System.out.println("这是第" + num + "组符合要求的数");
System.out.println(str[k1]);
System.out.println(str[k2]);
System.out.println(str[k3]);
System.out.println(str[k4]);
System.out.println(str[k5]);
System.out.println(str[k6]);
System.out.println(str[k7]);
System.out.println(str[k8]);
System.out.println(str[k9]);
num++;
}
}
}
}
}
}
}
}
}
}
System.out.println("程序退出");
}
}
public class Grid99 {
// private static String[] str = new String[362880];
// private static int i = 0;
/**
* @param args
* 得到所有行不相同的序列
*/
public String[] creatDifString(){
int k1, k2, k3, k4, k5, k6, k7, k8, k9;
String[] str = new String[362880];
int i = 0;
for(k1 = 1; k1 <= 9; k1++){
for(k2 =1; k2 <= 9; k2++){
if(k2 ==k1){
continue;
}
for(k3 = 1; k3 <= 9; k3++){
if(k3 ==k1 ||k3 ==k2){
continue;
}
for(k4 = 1; k4 <=9; k4++){
if(k4 == k1 ||k4 ==k2 ||k4==k3){
continue;
}
for(k5 = 1; k5 <=9; k5++){
if(k5 == k1 ||k5 == k2 ||k5 ==k3 ||k5 ==k4){
continue;
}
for(k6 = 1; k6<=9; k6++){
if(k6 == k1 || k6 == k2 || k6 ==k3 ||k6 ==k4 ||k6 ==k5){
continue;
}
for(k7 = 1; k7 <=9; k7++){
if(k7 ==k1 || k7 == k2 || k7 == k3 || k7 ==k4 || k7 ==k5 ||k7 == k6){
continue;
}
for(k8 = 1; k8 <= 9; k8++){
if(k8 == k1 ||k8 ==k2 || k8 == k3 ||k8 ==k4 ||
k8 == k5 || k8 == k6 || k8 == k7){
continue;
}
for(k9 = 1; k9 <= 9; k9++){
if(k9 == k1 || k9 == k2 || k9 == k3 || k9 == k4 ||
k9 == k5 || k9 == k6 || k9 == k7 || k9 == k8){
continue;
}
str[i] = String.valueOf(k1) + String.valueOf(k2) + String.valueOf(k3) +
String.valueOf(k4) + String.valueOf(k5) + String.valueOf(k6) +
String.valueOf(k7) + String.valueOf(k8) + String.valueOf(k9);
i++;
}
}
}
}
}
}
}
}
}
return str;
}
public boolean getDifString(String str1, String str2, String str3, String str4, String str5,
String str6, String str7, String str8, String str9){
boolean flag = true;
String[] newstr = new String[9];
/**
* 按列组成九个字符串
*/
for(int i = 0; i < 9; i++){
char[] ch = {str1.charAt(i) , str2.charAt(i) , str3.charAt(i) , str4.charAt(i) ,
str5.charAt(i) , str6.charAt(i) , str7.charAt(i) , str8.charAt(i) , str9.charAt(i)};
newstr[i] = new String(ch);
}
for(int i = 0; i < 9; i++){
if(ColumnHasSame(newstr[i])){
flag = false;
break;
}
}
return flag;
}
public boolean ColumnHasSame(String str){
boolean flag = false;
out:
for(int i = 0; i < str.length() - 1; i++){
for(int j = i + 1; j < str.length(); j++){
if(str.charAt(i) == str.charAt(j)){
flag = true;
break out;
}
}
}
return flag;
}
public static void main(String[] args){
String[] str = new Grid99().creatDifString();
int N = 326880;
int M = 1 , num = 1;
int k1, k2, k3, k4, k5, k6, k7, k8, k9;
out:
for(k1 = 0; k1 < N; k1++){
for(k2 =0; k2 < N; k2++){
if(k2 == k1){
continue;
}
for(k3 = 0; k3 < N; k3++){
if(k3 ==k1 ||k3 ==k2){
continue;
}
for(k4 = 0; k4 < N; k4++){
if(k4 == k1 ||k4 ==k2 ||k4==k3){
continue;
}
for(k5 = 0; k5 < N; k5++){
if(k5 == k1 ||k5 == k2 ||k5 ==k3 ||k5 ==k4){
continue;
}
for(k6 = 0; k6< N; k6++){
if(k6 == k1 || k6 == k2 || k6 ==k3 ||k6 ==k4 ||k6 ==k5){
continue;
}
for(k7 = 0; k7 < N; k7++){
if(k7 ==k1 || k7 == k2 || k7 == k3 || k7 ==k4 || k7 ==k5 ||k7 == k6){
continue;
}
for(k8 = 0; k8 < N; k8++){
if(k8 == k1 ||k8 ==k2 || k8 == k3 ||k8 ==k4 ||
k8 == k5 || k8 == k6 || k8 == k7){
continue;
}
for(k9 = 0; k9 < N; k9++){
if(k9 == k1 || k9 == k2 || k9 == k3 || k9 == k4 ||
k9 == k5 || k9 == k6 || k9 == k7 || k9 == k8){
continue;
}
if(num >M){
break out;
}
if(new Grid99().getDifString(str[k1], str[k2], str[k3], str[k4], str[k5],
str[k6], str[k7], str[k8], str[k9])){
System.out.println("这是第" + num + "组符合要求的数");
System.out.println(str[k1]);
System.out.println(str[k2]);
System.out.println(str[k3]);
System.out.println(str[k4]);
System.out.println(str[k5]);
System.out.println(str[k6]);
System.out.println(str[k7]);
System.out.println(str[k8]);
System.out.println(str[k9]);
num++;
}
}
}
}
}
}
}
}
}
}
System.out.println("程序退出");
}
}