public bool GenerateLatinSqure2(ref int RX, int[,] LS) { if (RX < 0 || LSR == null) { LSR = new LatSqrRow[9]; for (int k = 0; k < 9; k++) { LSR[k] = new LatSqrRow(PatGen, k); } RX = 0; LSR[RX].SetPreInfo(null); } if (RX == 8) { while (LSR[RX].nc <= 0) { RX--; //variable portion is one line blank } } do { int[] P = LSR[RX].Gen_LS_RowX(); if (P != null) { for (int c = 0; c < 9; c++) { LS[RX, c] = P[c]; } if (RX == 8) { return(true); } LSR[RX + 1].SetPreInfo(LSR[RX++]); } else { while (RX > 0 && LSR[--RX].nc <= 0) { ; } } }while(RX >= 0); return(false); }
public void SetPreInfo(LatSqrRow preLSR) { this.preLSR = preLSR; }