请教一个问题 如何1~9这九个数填充到一个9*9的数组  并输出所有可能

解决方案 »

  1.   

    /*
    程序不难,但是效率就不好弄了,9的81次方循环,采用模拟进位的方式
    比如
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1下一次最低位增加
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 2最低位依次增加,当最低位到达9的时候
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 9最低位再继续增加的时候,发生进位
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 2 1依次如此累加,直到增加到
    9 9 9 9 9 9 9 9 9
    9 9 9 9 9 9 9 9 9
    9 9 9 9 9 9 9 9 9
    9 9 9 9 9 9 9 9 9
    9 9 9 9 9 9 9 9 9
    9 9 9 9 9 9 9 9 9
    9 9 9 9 9 9 9 9 9
    9 9 9 9 9 9 9 9 9
    9 9 9 9 9 9 9 9 9
    为止退出循环
    */public class Test {
        public static void main(String[] args) throws Throwable {
            int n = 9;
            int[] num = new int[n*n]; //声明一个长度为9*9=81的数组
            for (int i=0; i<num.length; i++) {num[i] = 1;} //初始化数组的81个元素都是1        while (num[0] < 10) {
                for (int i=0; i<num.length; i++) { //循环打印数组的81个数,每行9个
                    System.out.printf("%d ", num[i]);
                    if ((i+1)%n == 0) System.out.println();
                }
                System.out.println();            num[num.length-1]++; //模拟进位,低位增加
                for (int i=num.length-1; i>0; i--) { //判断是否发生进位
                    if (num[i] == 9) { //如果某位到达9,则发生进位
                        num[i] = 1; //进位就是该位置重新赋值为1
                        num[i-1]++; //该位置的前一位置增加1
                    } else { //如果没有发生进位,后续的也不会再发生了
                        break; //避免无意义的循环,break退出进位判断
                    }
                }
            }  
        }
    }