题解 | #杨辉三角的变形#
杨辉三角的变形
https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while(in.hasNext()){
int num = in.nextInt();
List<List<Integer>> list = new ArrayList<List<Integer>>();
for(int i=0 ; i<num ; ++i){
list.add(new ArrayList<>());
}
list.get(0).add(1);
dfs(num, 1, list);
//System.out.println(list);
int i=0;
for(; i<list.get(num-1).size() ; ++i){
if(list.get(num-1).get(i)%2 == 0){
System.out.println(i+1);
break;
}
}
if(i==list.get(num-1).size()){
System.out.println(-1);
}
}
}
public static void dfs(int num, int layer, List<List<Integer>> list){
if(layer == num){
return;
}
for(int i=0 ; i<layer*2+1 ; ++i){
int size = list.get(layer-1).size();
int x = (i-2<0?0:list.get(layer-1).get(i-2));
int y = (i-1>=size||i-1<0?0:list.get(layer-1).get(i-1));
int z = (i>=size?0:list.get(layer-1).get(i));
//System.out.println(x+" "+y+" "+z);
list.get(layer).add(x+y+z);
}
dfs(num, layer+1, list);
}
}

查看10道真题和解析