早上的比赛,忘记测试用例了。
计算输入数字N在杨辉三角形中出现的第一个位置
(把杨辉三角形平铺成一个数列)
我是构建了杨辉三角,用count记录添加次数,发现N时输出count
(注意特判当N是1时输出1,count初始化为1)
import java.util.*;
public class Main {
public static void triangle(int N) {
if (N == 1) {
System.out.println(1);
return;
}
List<List<Integer>> answers = new ArrayList<List<Integer>>();
int count = 1;
// 外循环构造i行杨辉三角
for (int i = 0; ; ++i){
// 内构造杨辉三角的第i行
List<Integer> answer = new ArrayList<>();
for (int j = 0; j <= i; ++j){
if (j == 0 || j == i){
answer.add(1);
count++;
}else{
answer.add(answers.get(i - 1).get(j - 1) + answers.get(i - 1).get(j));
// 发现N
if (answers.get(i - 1).get(j - 1) + answers.get(i - 1).get(j) == N) {
System.out.println(count);
return;
}
count++;
}
}
answers.add(answer);
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
triangle(sc.nextInt());
}
}