g*******r 发帖数: 44 | 1 思路就是backtracking,做到bug-free有点难啊。 哪位有简洁明了的代码啊?好学习一
下。 | l***i 发帖数: 1309 | 2 interviewstreet.com has a sudoku competition this Saturday, so you can test
your code for free, and maybe win a prize. | G***o 发帖数: 249 | 3 re
【在 g*******r 的大作中提到】 : 思路就是backtracking,做到bug-free有点难啊。 哪位有简洁明了的代码啊?好学习一 : 下。
| a********y 发帖数: 1262 | 4 public void solveSudoku(char[][] board)
{
// Start typing your Java solution below
// DO NOT write main() function
}
public void tryNextBoard(char[][] board, int row, int column)
{
//System.out.println("row : "+row+"column: "+column);
if(row == board.length && column == 0)
{
//got it you can print it out or store to external array
return ;
}
else if(board[row][column] != '.')
{
int[] next = getNext(board.length,board[0].length,row,column
);
tryNextBoard(board, next[0],next[1]);
}
else
{
for(char i = '1'; i <= '9'; i++)
{
board[row][column] = i ;
if( isValidSudoku( board))
{
int[] next = getNext(board.length,board[0].length,
row,column);
tryNextBoard(board, next[0],next[1]);
}
board[row][column] = '.';
}
}
}
public int[] getNext(int rows, int columns, int row, int column)
{
int[] next = new int[2];
column ++;
if(column == columns)
{
column = 0;
row ++;
}
next[0] = row;
next[1] = column;
return next;
}
【在 g*******r 的大作中提到】 : 思路就是backtracking,做到bug-free有点难啊。 哪位有简洁明了的代码啊?好学习一 : 下。
| Y**3 发帖数: 21 | 5 void BackTrack(vector > &board,int k,bool& bFindOne)
{
if(k>=81)
{
bFindOne=true;//find a solution
return;
}
int row=k/9;
int col=k%9;
if(isdigit(board[row][col]))//already set
BackTrack(board,k+1,bFindOne);
else
{
for(int i=1;i<=9;i++)
{
board[row][col]=i+'0';
if(isValid(board,row,col))
BackTrack(board,k+1,bFindOne);
if(bFindOne)return;
}
board[row][col]='.';//reset this position before trackback
}
}
void solveSudoku(vector > &board)
{
bool bFindOne=false;
BackTrack(board,0,bFindOne);
}
加上sudoku validation 的判断代码,确实太长了 | l****1 发帖数: 19 | 6 DLX?
这个一般不会让面试写吧,要是问我我会直接从邮箱里找出大学时的代码演示加解释。。 | Y**3 发帖数: 21 | 7 这个应该写出回溯的就可以了吧,当场手写个bugfree的DLX必定是搞竞赛的,PS,
interviewstreet上有大神sudoku竟然只用了两百个字符,膜拜。。。 | C***U 发帖数: 2406 | 8 有代码么?
贴出来膜拜一下
【在 Y**3 的大作中提到】 : 这个应该写出回溯的就可以了吧,当场手写个bugfree的DLX必定是搞竞赛的,PS, : interviewstreet上有大神sudoku竟然只用了两百个字符,膜拜。。。
|
|