public class Main {
static int dr = 0;//向下+1,向右下-1
static int max = 0;
static int N;
static int[][] matrix;
public static void main(String[] args) throws IOException {
/*思路
dfs, dr={-1,0,1}
*/
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tokenizer = new StringTokenizer(br.readLine());
N = Integer.parseInt(tokenizer.nextToken());
matrix = new int[N][N];
for (int i = 0; i < N; i++) {
tokenizer = new StringTokenizer(br.readLine());
for (int j = 0; j <= i; j++) {
matrix[i][j] = Integer.parseInt(tokenizer.nextToken());
}
}
dfs(0,0,0,0);
System.out.println(max);
}
private static void dfs(int layer,int index,int sum,int dir){
if (layer == N){
if ((dr == -1 || dr == 0 || dr == 1) && (max < sum)){
max = sum;
}
return;
}
dr += dir;
for (int i = 0; i < 2; i++) {
dfs(layer+1,index+i,(sum+matrix[layer][index]),dir+(i == 0 ? 1 : -1));
}
dr -= dir;
}
}
十一届蓝桥杯 Java 数字三角形
最新推荐文章于 2022-05-01 15:05:42 发布