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();
    }

    }
  • 相关阅读:
    用webservice实现的一个天气预报程序
    让VS.net2005手机模拟器上网
    EVC4.0 PPC2003 Emulator 转中文版
    BSTR转CString
    在pocket pc 2003上播放声音
    VC++.net 2005 SmartDevice 屏幕转向
    c#.net2005 调用evc4.0生成的dll文件
    Json
    adb 命令模拟按键事件
    bat 截取字符
  • 原文地址:https://www.cnblogs.com/StoneTao/p/7083014.html
Copyright © 2011-2022 走看看