蓝桥杯真题——数字三角形(深度优先搜索)

蓝桥杯真题———数字三角形

我还是个小白分享一下,不过这个题做的还是有一点问题,有一部分样例过不了,欢迎大佬纠正。

我看了一下别人的博客,好像有很多人没有考虑到左右次数不能超过1的条件。

因为刚接触算法许多的算法都还没记过,做得可能相对比较复杂,请见谅!

import java.util.Scanner;

public class 第8题 {
	static int max=0;
	static int left=0;//计算左边的次数
	static int rignt=0;//计算右边的次数
	static int i=0;//纯粹为了方便
	static int j=0;
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int num=sc.nextInt();//接收有几行数字
		int[][] nums=new int[num][num]; //进行储存数字
		for (int i2 = 0; i2 < num; i2++) {
			for (int j2 = 0; j2 <= i2; j2++) {
				nums[i2][j2]=sc.nextInt();
			}
		}
		int mac=nums[0][0];//储存第一行的值
		int[][] book=new int[num][num];//进行标记
		int[][] sign=new int[num][num];//用来重置需要重置的标记
		int[][] key=new int[num][num];//判断上一次是向左加还是向右加
		dft(mac, book, nums, num, sign, key);
		System.out.println(max);//输出最大值
	}
	public static void dft(int mac,int[][] book,int[][] nums,int num,int[][] sign,int[][] key) {
		if (i==num-1) {
			if (rignt==left||rignt==left-1||rignt==left+1) {
				if (mac>max) {
					max=mac;
				}
			}
		}//判断完整的一次是否运行完,并对满足条件的情况储存最大值
		if (j==num-1) {
			return;
		}//执行完最后一次,并输出
		if (i+1

能力有限,请见谅

你可能感兴趣的:(算法,算法,java,深度优先,蓝桥杯)