Discussion:
[問題] sudoku
(时间太久无法回复)
Tc
2007-05-03 14:09:21 UTC
Permalink
在寫sudoku時遇到一個問題
如果需要倒回去的時候
後面的數字會和需要倒回去的數字重複
所以無法更新已填過的數字
該怎麼解決呢?

--


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.140.50
※ 編輯: geo760217 來自: 140.119.140.50 (05/03 22:09)
Terry
2007-05-03 14:54:13 UTC
Permalink
※ 引述《geo760217 (Tc)》之銘言:
: 在寫sudoku時遇到一個問題
: 如果需要倒回去的時候
: 後面的數字會和需要倒回去的數字重複
: 所以無法更新已填過的數字
: 該怎麼解決呢?
undo 是吧?
就user 每個一份, 就先留一份copy不就好了.
當然, 你可以想一下dancing link

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.154.217
Tc
2007-05-03 15:52:42 UTC
Permalink
※ 引述《Lordaeron (Terry)》之銘言:
: ※ 引述《geo760217 (Tc)》之銘言:
: : 在寫sudoku時遇到一個問題
: : 如果需要倒回去的時候
: : 後面的數字會和需要倒回去的數字重複
: : 所以無法更新已填過的數字
: : 該怎麼解決呢?
: undo 是吧?
: 就user 每個一份, 就先留一份copy不就好了.
: 當然, 你可以想一下dancing link
undo 之後值又變成不合法的了= =
這是我的source code
真的不知道該在哪裡undo
public void fillCell(int n) {

if(n==stackSize)
{
nSolutions++;
return;
}


for(int k=1;k<=9;k++)
{
if(boardOK(stack[n][1],stack[n][2],k))
{
stack[n][0]=k;
board[stack[n][1]][stack[n][2]]=k;
fillCell(n+1);

}

}


}

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.140.50
※ 編輯: geo760217 來自: 140.119.140.50 (05/03 23:52)
ha(ruhi|yate)ism
2007-05-03 23:29:51 UTC
Permalink
※ 引述《geo760217 (Tc)》之銘言:
: undo 之後值又變成不合法的了= =
: 這是我的source code
: 真的不知道該在哪裡undo
這麼說吧

在某格每試一個數字 是要這樣做:

(1) 試某數字
(2) 交給後面的人試著往下填
(3) 如果後面的人告訴我此路不通
(3a) 清掉換下一個,回到1
(當然如果都試過了就往上回報此路不通)
(3b) 否則(也就是後面的人告訴我 找到答案了)
就往上回報我找到答案了

黃色的就是你要的東西

--
'Oh, Harry, dont't you see?' Hermione breathed. 'If she could have done
one thing to make absolutely sure that every single person in this school
will read your interview, it was banning it!'
---'Harry Potter and the order of the phoenix', P513

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.197.116
Tc
2007-05-04 00:06:43 UTC
Permalink
問題是 往上回報此路不通
後面的值還在
會造成前面無法重填


※ 引述《LPH66 (ha(ruhi|yate)ism)》之銘言:
: ※ 引述《geo760217 (Tc)》之銘言:
: : undo 之後值又變成不合法的了= =
: : 這是我的source code
: : 真的不知道該在哪裡undo
: 這麼說吧
: 在某格每試一個數字 是要這樣做:
: (1) 試某數字
: (2) 交給後面的人試著往下填
: (3) 如果後面的人告訴我此路不通
: (3a) 清掉換下一個,回到1
: (當然如果都試過了就往上回報此路不通)
: (3b) 否則(也就是後面的人告訴我 找到答案了)
: 就往上回報我找到答案了
: 黃色的就是你要的東西

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.140.50
ha(ruhi|yate)ism
2007-05-04 00:58:51 UTC
Permalink
※ 引述《geo760217 (Tc)》之銘言:
: 問題是 往上回報此路不通
: 後面的值還在
: 會造成前面無法重填
: ※ 引述《LPH66 (ha(ruhi|yate)ism)》之銘言:
: : 這麼說吧
: : 在某格每試一個數字 是要這樣做:
: : (1) 試某數字
: : (2) 交給後面的人試著往下填
: : (3) 如果後面的人告訴我此路不通
: : (3a) 清掉換下一個,回到1
: : (當然如果都試過了就往上回報此路不通)
: : (3b) 否則(也就是後面的人告訴我 找到答案了)
: : 就往上回報我找到答案了
: : 黃色的就是你要的東西
對 所以我特別強調清掉

這清掉不只是為了換一個

還是為了保持傳進來時怎樣 回報不通傳回去時還是這樣

--
"LPH" is for "Let Program Heal us"....

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.197.116

Loading...