帮你写了个生成部分的代码.sggrid是一个grid控件。
function CheckNum(x, y, n: integer): boolean; var i: integer; begin Result := True; //判断行列是否满足数独要求 for i := 1 to 4 do begin if four[x, i] = n then Result := False; if four[i, y] = n then Result := False; end; //判断宫是否满足 ,代码未完成 end;
procedure GenNum(var i, j, n: integer); begin repeat i := 1 + random(4); j := 1 + random(4); n := 1 + random(4); until CheckNum(i, j, n); end;
procedure TForm1.Button3Click(Sender: TObject); var i, j, m, c: integer; baseNum: integer; begin baseNum := StrToInt(ComboBox1.Text);
//初始化 Fillchar(four, sizeof(four), 0);
//生成数据 for m := 1 to baseNum do begin GenNum(i, j, c); four[i,j] := c; end;
//赋值 for i := 1 to 4 do for j := 1 to 4 do if four[i, j] > 0 then sgFour.Cells[i - 1, j - 1] := IntToStr(Four[i, j]) else sgFour.Cells[i - 1, j - 1] := ''; end; |