JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 程式分享區 » 數獨、猜數字  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:挑戰 su do ku [Re:porcupine]
T55555

Java, Ruby, Haskell

版主

發文: 1026
積分: 24
於 2005-06-07 21:15 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
porcupine wrote:
用recursive 寫了一個解決的solution,沒有考慮速度,不過執行了一下還滿快的!參考參考!


稍微修改一下, 加上簡單的 checking rule, 速度就已經提高 ~50% ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  static void SolvePuzzle() {
    GetAns();
  }
 
  static boolean GetAns() {
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                if (puzzle[i][j] <= 0) {
                    next_value: for (int value = 1; value <= 9; value++) {
                        // On the same column, make sure no any row already used it
                        // On the same row, make sure no any column already used it
                        for (int k = 0; k < 9; k++) {
                            if ((puzzle[k][j] == value) || (puzzle[i][k] == value)) {
                                continue next_value;
                            }
                        }
                        // On the 3x3 box, make sure no other cell already used it
                        int p = (i / 3) * 3;
                        int q = (j / 3) * 3;
                        for (int x = 0; x < 3; x++) {
                            for (int y = 0; y < 3; y++) {
                                if (puzzle[p+x][q+y] == value) {
                                    continue next_value;
                                }
                            }
                        }
                        
                        puzzle[i][j] = (byte) value;
                        if (GetAns()) {
                            return true;
                        } else {
                            puzzle[i][j] = 0;
                        }
                    }
                    return false;
                }
            }
        }
        return true;
    }


T55555 edited on 2005-06-07 21:30
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
22130 挑戰 su do ku jimmy14 955 2005-06-02 15:54
17837 Re:挑戰 su do ku jd001982 334 2005-06-04 08:44
17612 Re:挑戰 su do ku jimmy14 225 2005-06-04 11:09
13729 Re:挑戰 su do ku T55555 190 2006-08-29 22:11
17803 Re:挑戰 su do ku porcupine 51 2005-06-06 21:22
17509 Re:挑戰 su do ku jimmy14 87 2005-06-06 23:31
17387 Re:挑戰 su do ku jimmy14 154 2005-06-07 00:36
17304 Re:挑戰 su do ku jimmy14 363 2005-06-07 22:54
17360 Re:挑戰 su do ku T55555 665 2005-06-07 23:56
21229 Re:挑戰 su do ku yaocl 399 2005-06-07 09:57
17920 Re:挑戰 su do ku T55555 1775 2005-06-07 21:15
17711 Re:挑戰 su do ku T55555 260 2005-06-09 00:13
17179 Re:挑戰 su do ku T55555 951 2005-06-09 01:39
17124 Re:挑戰 su do ku jimmy14 267 2005-06-09 09:30
17377 Re:挑戰 su do ku T55555 2567 2005-06-09 21:34
18633 Re:挑戰 su do ku jimmy14 614 2005-06-11 23:52
14586 Re:挑戰 su do ku worookie 203 2006-05-26 18:12
14911 Re:挑戰 su do ku worookie 24 2006-05-26 19:03
14480 Re:挑戰 su do ku jimmy14 21 2006-05-26 23:21
14552 Re:挑戰 su do ku worookie 179 2006-05-27 02:33
14793 Re:挑戰 su do ku worookie 13 2006-05-29 17:06
16740 Re:挑戰 su do ku vincentwin 50 2005-07-30 20:59
15802 Re:挑戰 su do ku 忙至極 159 2005-12-13 00:04
14708 Re:挑戰 su do ku 忙至極 569 2006-05-25 22:31
14515 Re:挑戰 su do ku worookie 658 2006-06-01 19:19
14250 Re:挑戰 su do ku 忙至極 325 2006-06-07 12:52
14584 Re:挑戰 su do ku T55555 55 2006-05-27 04:06
» JWorld@TW »  Java 程式分享區 » 數獨、猜數字

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8