Windows Việt

Cộng Đồng Công Nghệ Thông Tin Việt

Trang ChínhTrang Chính  Sự kiện  Tìm kiếmTìm kiếm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share
 
 Sudoku_Helper v1.0
Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
voduy
Member

voduy
Member
Giới tính : Nam
Tuổi : 38
Posts Posts : 82
Coins Coins : 302
Thanked Thanked : 96
Sudoku_Helper v1.0 Empty
Bài gửiTiêu đề: Sudoku_Helper v1.0   Sudoku_Helper v1.0 EmptyFri 04 Nov 2011, 06:49

Lâu lắm mới đụng vào VB, code có 50 dòng mà vật vã mới xong, soft này là chương trình giải game sudoku, sẵn tiện a đem nộp xin việc làm, không phải lập trình ttnt gì ghê gớm, sài backtracking trong ktlt, bạn nào có hứng cứ spam góp ý. Tải sài chơi tại đây:
Code:
http://www.mediafire.com/?9jy16ajf87d5v7o

※ Bài viết cùng chuyên mục


Tác giảThông điệp
daokiem_votinh64
Member

daokiem_votinh64
Member
Giới tính : Nam
Tuổi : 31
Posts Posts : 556
Coins Coins : 2157
Thanked Thanked : 168
Sudoku_Helper v1.0 Empty
Bài gửiTiêu đề: Re: Sudoku_Helper v1.0   Sudoku_Helper v1.0 EmptyWed 09 Nov 2011, 09:57

Quá hay,anh chỉ cái thuật toán này dc hem,em cũng tính làm cái helper này lâu òi mà suy nghĩ chưa ra

※ Bài viết cùng chuyên mục


Tác giảThông điệp
voduy
Member

voduy
Member
Giới tính : Nam
Tuổi : 38
Posts Posts : 82
Coins Coins : 302
Thanked Thanked : 96
Sudoku_Helper v1.0 Empty

Giải thuật này là Backtracking trong ktlt, tuy nhiên nó là phần nâng cao nên mình không được học. A đưa ra 1 ví dụ nhỏ hơn là "Bài toán Mã Đi Tuần" để tham khảo trước nha:
- Con mã xuất phát tại vị trí (0,0) Ta có Ma trận M 8x8 để lưu vị trí. Ví dụ con mã đi qua vị trí (4,5) trong lần đi thứ 6 thì M[4][5]=6.
- Xét trong lần đi thứ i, con mã đang ở vị trí x,y, như vậy con mã có 8 vị trí xung quanh để đi, ta có hàm Kt(int x,int y) để kiểm tra con mã đã đi qua vị trí này chưa. Code hàm Backtracking như sau:
Code:

void Backtracking(int i, int x,int y)
{
      for ....// duyệt qua từng vị trí trong 8 vị trí con mã đi được từ tọa độ x,y, vi trí hiện tại là x1,y1 chẳng hạn
      {
            if (i==80)// đi hết bàn cờ
            {
                  Xuất ma trận.
                  Return;
            }
            if(KT(x1,y1)==false)// chưa đi qua
            {
                    // lưu vết
                    M[x1][y1]= i+1;
                    //xử lý tiếp
                    Backtracking(i+1,x1,y1);
                    //backtrack: đi lùi lại thì phải "xóa vết", cái này tinh túy nhất của thuật toán, và cũng
khó hiểu nhất
                  M[x1][y1]=0;
            }
      }
}
Sau khi nghiền ngẫm kỹ thuật toán qua ví dụ trên, thấm rồi thì tiếp vào cái Sudoku, khi nào ok rùi thì reply a gợi ý tiếp nha. Thuật toán này backtracking này cực hay.

※ Bài viết cùng chuyên mục


Tác giảThông điệp
Sponsored content


Sudoku_Helper v1.0 Empty

※ Bài viết cùng chuyên mục


 
Sudoku_Helper v1.0
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Windows Việt :: Công Nghệ Thông Tin :: Thế Giới Phần Mềm :: Other Softs-
[Windows Việt] Deverloped by Nguyễn Gia Phú - https://windows.forumvi.com
Powered by © Forumotion.com - phpBB™ version ©phpBB2
Go to top Go to bottom