题解 | #杨辉三角的变形#

杨辉三角的变形

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);
    }
}

全部评论

相关推荐

想踩缝纫机的小师弟练...:不理解你们这些人,要放记录就把对方公司名字放出来啊。不然怎么网暴他们
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务