zoukankan      html  css  js  c++  java
  • 解数独

    bool vis[3][10][10];

    bool SetNum(int k,int i,int j)
    {
    k-='0';
    if(vis[0][i][k]||vis[1][j][k]||vis[2][i/3*3+j/3][k])return false;
    else{
    vis[0][i][k] = true;
    vis[1][j][k] = true;
    vis[2][i/3*3+j/3][k] = true;
    }
    return true;
    }

    void DelNum(int k,int i,int j)
    {
    k-='0';
    vis[0][i][k] = false;
    vis[1][j][k] = false;
    vis[2][i/3*3+ j/3][k] = false;
    }

    bool dfs(char** mp,int i ,int j)
    {
    if(j>=9){j-=9;i++;}
    if(i>=9)return true;
    if(mp[i][j] != '.')return dfs(mp,i,j+1);

    for(int k = '1'; k <= '9' ; k ++)
    {
    mp[i][j]=k;
    if(!SetNum(k,i,j)){
    mp[i][j]='.';
    continue;
    }
    if(dfs(mp,i,j+1))return true;
    DelNum(k,i,j);
    mp[i][j]='.';
    }
    return false;
    }

    void solveSudoku(char** board, int boardRowSize, int boardColSize) {

    memset(vis,0,sizeof(vis));
    for(int i = 0 ; i < 9 ; i ++){
    for(int j = 0 ; j < 9 ; j ++)
    {
    if(board[i][j] != '.')SetNum(board[i][j],i,j);
    }
    }
    dfs(board,0,0);


    }

  • 相关阅读:
    C到C++的升级
    设计模式分类
    对模式的十大误解
    MAC帧和IP包的分析
    python之路—从入门到放弃
    选课系统
    Scrapy框架详解
    爬虫系列
    Python从入门到断气
    常用模块
  • 原文地址:https://www.cnblogs.com/clover-xuqi/p/8743553.html
Copyright © 2011-2022 走看看