二维数组与数字三角形问题

**

二维数组

**

向二维数组中添加随机数``

public class test1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in );
        int [][]arr=new int [3][4];
        Random rd =new Random();
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
            arr[i][j]=rd.nextInt(100);

            }

        }

for循环输出

 for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]+ " ");

** foreach打印二维数组**

forint [ ] ints:arr){
forint val:ints)
{
System.out.print(val+ " ";
}
{
System.out.println( );
}

数字三角形问题
三角形数组求最大值问题,问题描述如下
12
8 9
11 7 16
13 9 8 7

从第一行的数字12开始选择数字,选择的方法是,向下、向左斜下方、
向右斜下方选择数字,问在每一行选择数字以后,得到的最大值是多少呢?

Scanner in = new Scanner(System.in );
        int [][]arr=new int [4][];
        arr[0]=new int[]{12};
        arr[1]=new int[]{8,9};
        arr[2]=new int[]{11,7,16};
        arr[3]=new int[]{13,9,8,7};
        //开辟一个记录最大值得辅助数组
        int [][]brr=new int [4][];
        for (int i = 0; i < brr.length; i++) {
            brr[i]=new int[i+1];
      }
        for (int i = 0; i < 4; i++) {
        brr[3][i]=arr[3][i];
        }
        //循环arr数组
        for (int i = arr.length-2;i>=0 ;i--) {
            //内层for循环再遍历每一行的元素值
            for (int j = arr[i].length - 1; j >= 0; j--) {
                 int a=0,b=0,c=0;
                 if(j>0){
                     a = arr[i][j] + brr[i+1][j-1];
                 }
                b= arr[i][j] + brr[i+1][j];
                c = arr[i][j] + brr[i+1][j+1];
                brr[i][j]=Math.max(c,Math.max(a,b));
            }

        }
        System.out.println(brr[0][0]);
        

你可能感兴趣的:(java实现)