编程之美1.15构造数独---置换法java版

原创 2016年05月31日 21:43:37
脑筋急转弯一样的东西。。。
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Test;

/**
 *
 * @author Administrator
 */
public class SudokuDisplace {

    public static void main(String[] args) {
        int[][] shudu = new int[9][9];
        int[][] arr = {{3, 5, 8}, {7, 9, 4}, {1, 6, 2}};
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                shudu[i][j] = 0;
            }
        }
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                shudu[i + 3][j + 3] = arr[i][j];
            }
        }
        //置换行
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                if (i == 0) {
                    shudu[i + 3][j] =shudu[i+5][j+3];
                    shudu[i + 3][j + 6] = shudu[i+4][j+3];
                }

                if (i == 1) {
                    shudu[i + 3][j] = shudu[i+2][j+3];
                    shudu[i + 3][j + 6] = shudu[i+4][j+3];
                }

                if (i == 2) {
                    shudu[i + 3][j] = shudu[i+2][j+3];
                    shudu[i + 3][j + 6] = shudu[i+1][j+3];
                }

            }
        }
        //置换列
        for(int i=0;i<3;i++){
            for(int j =0;j<3;j++){
                if(j ==0){
                    shudu[i][j + 3] = shudu[i+3][j+5];
                    shudu[i + 6][j + 3] = shudu[i+3][j+4];
                    shudu[i][j]=shudu[i+3][j+2];
                    shudu[i+6][j]=shudu[i+3][j+1];
                    shudu[i][j+6]=shudu[i+3][j+8];
                    shudu[i+6][j+6]=shudu[i+3][j+7];
                }
                if (j == 1) {
                    shudu[i][j + 3] = shudu[i+3][j+2];
                    shudu[i + 6][j + 3] = shudu[i+3][j+4];
                    shudu[i][j] = shudu[i+3][j-1];
                    shudu[i+6][j]=shudu[i+3][j+1];
                    shudu[i][j+6]=shudu[i+3][j+5];
                    shudu[i+6][j+6]=shudu[i+3][j+7];
                }
                if (j == 2) {
                    shudu[i][j + 3] = shudu[i+3][j+2];
                    shudu[i + 6][j + 3] = shudu[i+3][j+1];
                    shudu[i][j] = shudu[i+3][j-1];
                    shudu[i+6][j]=shudu[i+3][j-2];
                    shudu[i][j+6]=shudu[i+3][j+5];
                    shudu[i+6][j+6]=shudu[i+3][j+4];
                }
            }
        }
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                if (j != 8) {
                    System.out.print(shudu[i][j] + "    ");
                } else {
                    System.out.println(shudu[i][j]);
                }

            }
        }
    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

编程之美1.15——构造数独

推荐http://blog.csdn.net/hustspy1990/article/details/7464698 http://blog.csdn.net/linyunzju/article/de...

[编程之美] PSet1.15 构造数独

问题: 构造一个9*9的方格矩阵,玩家要在每个方格中,分别填上1至9的任意一个数字, 让整个棋盘每一列、每一行以及每一个3*3的小矩阵中的数字都不重复。

编程之美:第一章 1.15构造数独

/* 构造数独: 数独的棋盘是由九九八十一个小方格组成的。玩家在每个小格子中,分别天上1至9的任意一个数字,让整个棋盘每一行,每一列,以及每一个3*3的小矩阵中的数字都不 重复。 使用一个二维数组来存...

编程之美 1.15 构造数独

法国使馆

编程之美1.15节:构造数独算法-回溯法和置换法

1. 回溯法-程序 /**回溯法 * 生成数独矩阵 * From 编程之美1.15 */ #include #include /*要生成的数独矩阵个数*/ #define SUDOK...

关于《编程之美》中构造数独问题的小结

数独是一个很有意思的游戏,我以前玩过很多次,但一直没想过自己写一个。 读《编程之美》在构造数独这一小节中,书中给我们两个算法,这两个算法都是用来初步生成一张初始的数独图。  回溯法和置换法。 对...

编程之美中构造数独例子

编程之美1.15构造数独 生成一个有效的数独矩阵,只生成一个,可以通过递归将所有有效矩阵都构造出来 #include #include #define NO_MOVE 0 #define A...

无限数独1.15

  • 2007-10-05 13:49
  • 248KB
  • 下载

无限数独1.15

  • 2007-10-08 09:18
  • 251KB
  • 下载

编程之美之数独求解器的C++实现方法

编程之美的第一章的第15节,讲的是构造数独,一开始拿到这个问题的确没有思路, 不过看了书中的介绍之后, 发现原来这个的求解思路和N皇后问题是一致的, 但是不知道为啥,反正一开始确实没有想到这个回溯法,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)