zoukankan      html  css  js  c++  java
  • 数独小算法,测试通过(Java)

    class SudokuMatrix {

    private int[][] matrix = new int[][] {
    {0, 5, 0, 6, 0, 1, 0, 0, 0},
    {0, 0, 7, 0, 9, 0, 0, 2, 0},
    {3, 0, 0, 0, 0, 4, 0, 0, 1},
    {9, 0, 0, 0, 0, 0, 1, 3, 0},
    {0, 0, 8, 0, 5, 0, 7, 0, 0},
    {0, 2, 6, 0, 0, 0, 0, 0, 8},
    {7, 0, 0, 9, 0, 0, 0, 0, 5},
    {0, 9, 0, 0, 4, 0, 3, 0, 0},
    {0, 0, 0, 2, 0, 8, 0, 1, 0},
    };

    public void run(){
    calc();
    }


    private void calc() {

    int[] coordinate = getNextData();
    int m = coordinate[0];
    int n = coordinate[1];

    for (int k = 1; k <= 9; k++) {
    if(checkNumber(m,n,k)) {
    matrix[m][n] = k;

    //System.out.println( m + "," + n + " with " + k );

    if ( getNextData() == null ) {
    print(matrix);
    }
    else {
    calc();
    }
    }

    }


    matrix[m][n] = 0;
    }

    private int[] getNextData(){

    for (int row = 0; row < 9; row++) {
    for (int col = 0; col < 9; col++) {
    if (matrix[row][col] == 0) {
    int[] coordinateOfEmptySquare = {row, col};
    return coordinateOfEmptySquare;
    }
    }
    }

    return null;
    }


    private boolean checkNumber(int row, int col, int n) {
    for (int i = 0; i < 9; i++) {
    if (matrix[row][i] == n || matrix[i][col] == n) {
    return false;
    }
    }

    int[] leftTop = {row - (row % 3), col - (col % 3)};

    for (int r = leftTop[0]; r <= leftTop[0] + 2; r++) {
    for (int c = leftTop[1]; c <= leftTop[1] + 2; c++) {
    if (matrix[r][c] == n) {
    return false;
    }
    }
    }

    return true;
    }

    public void print(int[][] grid) {
    for (int i = 0; i < 9; i++) {
    for (int j = 0; j < 9; j++) {
    System.out.print(grid[i][j] + " ");
    }
    System.out.println();
    }
    System.out.println();
    }

    }
  • 相关阅读:
    mysql判断一个字符串是否包含某几个字符
    mysql动态sql 整理多个字段
    mysql 把表中某一列的内容合并为一行
    linux基础
    shell基础
    香港主机Squid+Stunnel代理搭建
    mysql字符串根据指定字符分割
    tomcat项目快速启动设置
    Linux系统内存占用90%以上——解决方法
    redis常用命令
  • 原文地址:https://www.cnblogs.com/StoneTao/p/7083014.html
Copyright © 2011-2022 走看看