一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 284|回复: 0
收起左侧

[Leetcode] Sudoku solver javascript求助

[复制链接] |试试Instant~ |关注本帖
glaciersilent 发表于 2015-9-3 01:46:55 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
刚学习javascript,用js写这道题总也通不过,完全一样的算法用java(基本逐行翻译)是可以AC的。请大家看看是怎么回事,Thanks~
  1. var rows=new Array(9);
  2. var cols=new Array(9);
  3. var grids=new Array(9);
  4. for(var i=0;i<9;i++){
  5.     rows[i]=new Set();
  6.     cols[i]=new Set();
  7.     grids[i]=new Set();
  8. }
  9. var solveSudoku = function(board) {
  10.     for(var i=0;i<9;i++){
  11.         for(var j=0;j<9;j++){
  12.             if(board[i][j]==='.')
  13.                 continue;
  14.             rows[i].add(board[i][j]);
  15.             cols[j].add(board[i][j]);
  16.             grids[Math.floor(i/3)*3+Math.floor(j/3)].add(board[i][j])
  17.         }
  18.     }
  19.     sudokuSolver(board,0);
  20.     return;
  21. };

  22. var sudokuSolver=function(board,n){
  23.     if(n==81)
  24.         return true;
  25.     row=Math.floor(n/9);
  26.     col=n%9;
  27.     var ch=board[row][col];
  28.     if(ch!=='.'){
  29.         return sudokuSolver(board,n+1);
  30.     }
  31.     for(var c='1';c<='9';c++){
  32.         if(rows[row].has(c)||cols[col].has(c)||
  33.             grids[Math.floor(row/3)*3+Math.floor(col/3)].has(c))
  34.             continue;
  35.         board[row][col]=c;
  36.         rows[row].add(c);
  37.         cols[col].add(c);
  38.         grids[Math.floor(row/3)*3+Math.floor(col/3)].add(c);
  39.         if(sudokuSolver(board,n+1))
  40.             return true;
  41.         rows[row].delete(c);
  42.         cols[col].delete(c);
  43.         grids[Math.floor(row/3)*3+Math.floor(col/3)].delete(c);
  44.     }
  45.     board[row][col]='.';
  46.     return false;
  47. }
复制代码
出错的case如下:
Input:["..9748...","7........",".2.1.9...","..7...24.",".64.1.59.",".98...3..","...8.3.2.","........6","...2759.."]
Output:["129748345","734256178","526139299","217345246","364612594","498789312","641823523","752461886","893275917"]
Expected:["519748632","783652419","426139875","357986241","264317598","198524367","975863124","832491756","641275983"]
看起来问题似乎是Set没能判断出已经重复的元素,所以出现了“752461886”这种。

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 02:02

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表