數獨游戲 在9x9的方格內進行, 分為3x3的小方格,被稱為“區”。
數獨游戲首先從已經填入數字的格子開始。
數獨游戲的目的是根據下列規則,用1至9之間的數字填滿空格:
每個數字在每一行、每一列和每一區只能出現一次。
我在 Linux 服務器(請參見“在 Linux 下運行 ASP.NET 2.0”)上用 ASP.NET 2.0 實現了一個數獨解算器。
http://www.sudoku.name 網站上也有一個用戶界面相當不錯的“數獨解算器” ,但是其算法太差了,運算速度比我的算法慢多了。以其網站上的“#5328”謎題(也是我的數獨解算器的例題)為例,它需要大約四個小時才能給出答案,而我的解算器不到一秒鐘就可以給出答案。從它的運算過程來算,估計是逐個空格進行解算。而我的算法是先找出能填入數字個數最少的空格進行解算。算法這個微小的改進,就極大地提高了計算效率。好了,廢話少說,下面就是源程序:
1. sudoku.aspx:
1<%@ Page Language="C#" inherits="Skyiv.Ben.Web.SudokuPage" %>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" >
4<head runat="server">
5 <title>銀河 - 數獨</title>
6</head>
7<body>
8 <form id="form1" runat="server">
9 <asp:Button Text="返回" OnClick="BtnUriHome_Click" runat="server" />
10 <asp:Button Text="開始" OnClick="BtnSubmit_Click" runat="server" />
11 <hr />
12 <div>
13 <a href="http://www.sudoku.name/index-cn.php" target="_blank">數獨游戲</a>
14 在9x9的方格內進行, 分為3x3的小方格,被稱為“區”。<br />
15 數獨游戲首先從已經填入數字的格子開始。<br />
16 數獨游戲的目的是根據下列規則,用1至9之間的數字填滿空格:<br />
17 http://www.knowsky.com 每個數字在每一行、每一列和每一區只能出現一次。<br />
18 </div>
19 <div>
20 <asp:TextBox Runat="Server" Id="tbxInput" MaxLength="512" Wrap="False"
21 TextMode="MultiLine" Columns="15" Rows="14" />
22 <asp:TextBox Runat="Server" Id="tbxOutput" ReadOnly="True" Wrap="False"
23 TextMode="MultiLine" Columns="15" Rows="14" />
24 </div>
25 </form>
26</body>
27</html>
28