数字三角形

功能实现了,不过细节没有修改,想用的可以修改修改,哪里细节不好注释都写了

*这个程序没有设置相应的,如果输入不是数学三角形的就会报错!没事改改,加点条件,别这么懒
再用Arraylist我就是狗,真难用
* */
import java.util.ArrayList;
import java.util.Scanner;

/**
 * The type Three.
 */
public class three {
    /**
     * The constant arrayList.//输入的数
     */
    public static ArrayList<String[]> arrayList = new ArrayList<>();
    /**
     * The constant array.//和,没啥用
     */
    public static int[][] array = new int[10][10];
    /**
     * The constant array2.//标记走哪里的1-下 2-右下
     */
    public static int[][] array2 = new int[10][10];
    /**
     * The constant data.//走过的
     */
    public static ArrayList<Integer> data = new ArrayList();
    /**
     * The constant scanner.
     */
    public static Scanner scanner = new Scanner(System.in);
    /**
     * The constant N.
     */
    public static int N = 0;

    /**
     * The entry point of application.
     *
     * @param args the input arguments
     */
    public static void main(String[] args) {
        System.out.println("请输入行数");
        N = scanner.nextInt();
        scin();
        System.out.println(maxSum(0,0));
        scn();
    }

    /**
     * 显示走过的路
     */
    private static void scn(){
        da();
        for (Integer i :
                data) {
            System.out.println(i);
        }
    }

    /**
     * 讲走过的路加入data数组中
     */
    private static void da(){
        int i = 0;
        int j = 0;
        while (true){
            if(array2[i][j] == 1){
                String[] re1 = re(i);
                data.add(conversion(re1[j]));
                i++;
            }else{
                if (array2[i][j] == 2){
                    String[] re2 = re(i);
                    data.add(conversion(re2[j]));
                    i++;
                    j++;
                }else {
                    String[] re3 = re(i);
                    data.add(conversion(re3[j]));
                    break;
                }
            }
        }
    }

    /**
     * Scin.
     * -1--结束一行
     * -2--结束本次
     * 都不是--输入
     */
    public static void scin(){
        System.out.println("---------------------------");
        System.out.println("每行结束请输入-1,整体结束请输入-2");
        System.out.println("---------------------------");
        ArrayList<String> datas = new ArrayList<>();
        while(true){
            String data = scanner.next();
            if (!data .equals("-1") && !data .equals("-2") ){
                datas.add(data);
            }else{
                if (!data .equals("-2") ){
                    System.out.println("结束本行输入");
                    arrayList.add(become_In(datas));
                    datas.clear();
                }else{
                    System.out.println("结束本次输入");
                    arrayList.add(become_In(datas));
                    datas.clear();
                    break;
                }
            }
        }
    }

    /**
     * 完成功能
     * @param r 行
     * @param j 列
     * @return sum值
     * 咋实现的不用写把,你要是这都不会就找豆腐撞死把
     */
    private static int maxSum(int r,int j){
        if (r == N-1){
            String[] a = re(r);
            array[r][j] = conversion(a[j]);
            return conversion(a[j]);
        }
        int sum1 = maxSum(r+1,j);
        int sum2 = maxSum(r+1,j+1);
        if (sum1 > sum2){
            String[] b = re(r);
            array[r][j] = sum1+conversion(b[j]);
            array2[r][j] = 1;
            return sum1+conversion(b[j]);
        }
        String[] c = re(r);
        array[r][j] = sum2+conversion(c[j]);
        array2[r][j] =2;
        return sum2+conversion(c[j]);
    }

    private static String[] re(int r){
        String[] a = arrayList.get(r);
        return a;
    }

    /**
     * 将字符串转换为int
     * @param s
     * @return
     */
    private static int conversion(String s){
        int i = Integer.parseInt(s);
        return i;
    }

    /**
     * 将arraylist中的东西转换为数组
     * @param x
     * @return
     */
    private static String[] become_In(ArrayList<String> x){
        String[] arr = x.toArray(new String[x.size()]);
        return arr;
    }
数字三角形

 

posted @ 2022-05-18 22:04  七色angel  阅读(45)  评论(0编辑  收藏  举报