杨辉三角

题目:使用二维数组打印一个10行杨辉三角。

思路:

本题考察数组元素的赋值。

1. 第一行有1个元素,第n行有n个元素

2.每一行的第一个元素和最后一个元素都是1

3.从第三行开始,对于非第一个元素和最后一个元素的元素,即:yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j]; 

代码实现:

public class test{
    public static void main(String[] args) {
        int[][] yangHui = new int[10][];
        for (int i = 0; i < yangHui.length; i++) {
            yangHui[i] = new int[i + 1];

            // 给首末元素赋值
            yangHui[i][0] = yangHui[i][i] = 1;
            // 给每行的非首末元素赋值
            for (int j = 1; j < yangHui[i].length - 1; j++) {
                yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
            }

        }
        // 二维数组的遍历
        for (int i = 0; i < yangHui.length; i++) {
            for (int j = 0; j < yangHui[i].length; j++) {
                System.out.print(yangHui[i][j] + " ");
            }
            System.out.println();
        }
    }
}

运行结果:

【拓展之笔试题】

创建一个长度为6的int型数组,要求数组元素的值都在1-30之间,且是随机赋值。同时,要求元素的值各不相同。

噗.....半个小时才做出来T.T,各不相同一直没找到解决方案。。。

解法1(自己写的)

public class test{
    public static void main(String[] args) {
        int[] arr = new int[6];
        arr[0] = (int)(Math.random() * 30) + 1; // [0,1) [0,30) [1,31)
        int index = 1;
        while (index < arr.length){
            boolean flag = false;
            int temp = (int)(Math.random() * 30) + 1;
            for (int i = 0; i < index; i++) {
                if (temp == arr[i]){
                    flag = true;
                    break;
                }
            }
            if (!flag){
                arr[index] = temp;
                index++;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

解法2(参考康师傅)

public class test{
    public static void main(String[] args) {
        int[] arr = new int[6];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (int)(Math.random() * 30) + 1; // [0,1) [0,30) [1,31)
            for (int j = 0; j < i; j++) {
                if (arr[i] == arr[j]){
                    i--;  // 妙极了~~
                    break;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}
原文地址:https://www.cnblogs.com/HuangYJ/p/13675336.html