您的位置:

java数独,java数独程序设计思路

本文目录一览:

一个java解数独的问题

可用递归方式来做,具体java代码我就不写了。

把格子从左上到右下排成64个,按次序每个做遍历。

思路大概是这样的:

function MakeAnswer(传入父格子)

{

取父格子下的第一个子格子作为当前格子

计算当前格子所有可取的解

while (当前格子还有可取的未尝试的解)

{

取一个这个当前格子未尝试过的解,并把这个解标记成已尝试

判断是否这个当前格子已经是最后一个格子了,若是,则表示已经得到可行的解,则这个猜测是可行的,否则继续递归 MakeAnswer(当前格子)

}

}

某个格子的尝试的解改变了之后,往下递归子格子的时候,所有子格子的可能的解都有可能会变。

写得比较抽象,不知你看懂没

c++或java 写一个解3阶数独的程序

123456789101112131415161718192021public static Geocache[] createGeocaches(int a) { if(a = 0) return new Geocache[0]; Random rand = new Random(); Geocache[] result = new Geocache[a]; for(int i = 0; i a; i++) { //因为题目没有描述,这里假设x, y是随机整数,Geocache有a href=";tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dhrjIWn1D4n19hmWDzm1R0IAYqnWm3PW64rj0d0AP8IA3qPjfsn1bkrjKxmLKz0ZNzUjdCIZwsrBtEXh9GuA7EQhF9pywdQhPEUiqkIyN1IA-EUBtkPWm4rjR4rHbLPWR1nH63P16L" target="_blank" class="baidu-highlight"构造函数/a(int, int) int x = rand.nextInt(); int y = rand.nextInt(); result[i] = new Geocache(x, y); } return result; }

java 编写16*16数独 但是怎么让数独里的数字变成颜色 就是本来里面填充的是数字 现在变成16种不同颜色.

算法和原来一样吧,只是每一个数字都代表一个颜色,先把数字填好,然后在根据数字把界面中的方格变成颜色,比如1对应红色,2对应黄色,3对应绿色等等

java 数独(性质求简单代码)

这只是一个找规律的题而已,找好规律了,谁都会做。

import java.util.Arrays;

import java.util.Scanner;

public class Kuaile {

public static void main(String[] args) {

System.out.println("请输入一个=34的数:");

Scanner in = new Scanner(System.in);

int num = in.nextInt();

while (num 34) {

System.out.println("数值太小了!请重输:");

num = in.nextInt();

}

int row1[] = { 8, 11, num - 20, 1 };

int row2[] = { num - 21, 2, 7, 12 };

int row3[] = { 3, num - 18, 9, 6 };

int row4[] = { 10, 5, 4, num - 19 };

System.out.println(Arrays.toString(row1));

System.out.println(Arrays.toString(row2));

System.out.println(Arrays.toString(row3));

System.out.println(Arrays.toString(row4));

}

}

JAVA程序写一个method,验证一个数独是否正确

public static Geocache[] createGeocaches(int a) {

        if(a = 0) return new Geocache[0];

        Random rand = new Random();

        Geocache[] result = new Geocache[a];

        for(int i = 0; i  a; i++) {

                //因为题目没有描述,这里假设x, y是随机整数,Geocache有构造函数(int, int)

                int x = rand.nextInt();

                int y = rand.nextInt();

                result[i] = new Geocache(x, y);

        }

        return result;

}

用java虚拟机实现数独计算的功能,求解决代码成几何倍数增加的问题!

package know;

public class T11 {

 public static void main(String[] args) {

  int[][] shudu=shudu(4);

  for(int i=0;ishudu.length;i++){

   for(int j=0;jshudu[i].length;j++){

    System.out.print(shudu[i][j]+" ");

   }

   System.out.println();

  }

 }

 /**

  * 排列规则(9)

  *  123456789

  234567891

  345678912

  456789123

  567891234

  678912345

  789123456

  891234567

  912345678

  * @param i

  */

 public static int[][] shudu(int i){

  /**

   * 构造数组

   */

  int[][] shudu=new int[i][];

  for(int k=0;ki;k++){

   shudu[k]=new int[i];

  }

  /**

   * 填充数字

   */

  for(int k=0;ki;k++){

   int first=k+1;

   for(int j=0;ji;j++){

    shudu[k][j]=first++;

    if(shudu[k][j]i){

     first=1;

     shudu[k][j]=first++;

    }

   }

  }

  return shudu;

 }

}

设计这种程序,第一是要想清楚设计思路,确定思路之后,发现逻辑很有规律,只是多次重复这个规律,对于这种情况,一般要想到的就是用for循环或递归这两种解决方法