Leetcode c语言-Valid Sudoku

Title:

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.

The Sudoku board could be partially filled, where empty cells are filled with the character '.'.


A partially filled sudoku which is valid.

Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.



这道题就是判断一个数独是否合理,也就是每一行每一列,和每一个小九宫格里的数字都不能重复,1-9.

这道题分三步,分别判断每一行,每一列和每一个九宫格。


Solution:

bool isValidSudoku(char** board, int boardRowSize, int boardColSize) {  
    int map[10],i,j,k,l,num;  
    if(boardRowSize!=9 || boardColSize!=9)return false;  
    for(i=0;i<9;i++){  
        memset(map,0,sizeof(map));  
        for(j=0;j<9;j++){  
            if(board[i][j]=='.')continue;  
            if(board[i][j]<'0' || board[i][j]>'9')return false;  
            num=board[i][j]-'0';  
            if(map[num]!=0)return false;  
            map[num]=1;  
        }  
    }  
    for(j=0;j<9;j++){  
        memset(map,0,sizeof(map));  
        for(i=0;i<9;i++){  
            if(board[i][j]=='.')continue;  
            num=board[i][j]-'0';  
            if(map[num]!=0)return false;  
            map[num]=1;  
        }  
    }  
    for(i=0;i<9;i+=3){  
        for(j=0;j<9;j+=3){  
            memset(map,0,sizeof(map));  
            for(k=i;k<i+3;k++){  
                for(l=j;l<j+3;l++){  
                    if(board[k][l]=='.')continue;  
                    num=board[k][l]-'0';  
                    if(map[num]!=0)return false;  
                    map[num]=1;  
                }  
            }  
        }  
    }  
    return true;  
} 


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值