日期:2014-05-18 浏览次数:21155 次
private void FillArray() { for (int m = 0; m < 3; m++) { for (int n = 0; n < 3; n++) { for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (pArr[m][n][i][j].Default == false) {//空白格 var pv = GetNumber(new int[4] { m, n, i, j }); if (!pv.Ok) { m = pv.Position[0]; n = pv.Position[1]; i = pv.Position[2]; j = pv.Position[3]; ClearAfter(pv.Position); } pArr[m][n][i][j].Value = pv.Value; } } }//end small } }//end big }
private PosValues GetNumber(int[] pos) { List<int> nums = new List<int>(); for (int n = 1; n <= 9; n++) { nums.Add(n); } //3宫格内 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { int a = pArr[pos[0]][pos[1]][i][j].Value; if (a > 0 && nums.Contains(a)) { nums.Remove(a); } } } //横向 for (int n = 0; n < 3; n++) { for (int j = 0; j < 3; j++) { int a = pArr[pos[0]][n][pos[2]][j].Value; if (a > 0 && nums.Contains(a)) { nums.Remove(a); } } } //纵向 for (int m = 0; m < 3; m++) { for (int i = 0; i < 3; i++) { int a = pArr[m][pos[1]][i][pos[3]].Value; if (a > 0 && nums.Contains(a)) { nums.Remove(a); } } } if (nums.Count == 0) { if (posVals.Count == 0) { return new PosValues() { Value = 0 }; } var pv = posVals[posVals.Count - 1]; pv.Ok = false; pv.Value = pv.Values[0]; pv.Values.Remove(pv.Value); if (pv.Values.Count == 0) { posVals.Remove(pv); } return pv; } else { var pv = new PosValues(); pv.Position = pos; pv.Value = nums[0]; nums.Remove(pv.Value); pv.Values = nums; if (nums.Count > 0) { posVals.Add(pv);