链接: https://www.nowcoder.com/questionTerminal/f58859adc39f4edc9cd8e40ba4160339
来源:牛客网

魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树。
小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次。
如果小易到达过某个城市就视为小易游历过这个城市了,小易现在要制定好的旅游计划使他能游历最多的城市,请你帮他计算一下他最多能游历过多少个城市(注意0号城市已经游历了,游历过的城市不重复计算)。

输入描述:
输入包括两行,第一行包括两个正整数n(2 ≤ n ≤ 50)和L(1 ≤ L ≤ 100),表示城市个数和小易能行动的次数。
第二行包括n-1个整数parent[i](0 ≤ parent[i] ≤ i), 对于每个合法的i(0 ≤ i ≤ n - 2),在(i+1)号城市和parent[i]间有一条道路连接。
输出描述:
输出一个整数,表示小易最多能游历的城市数量。

这道题初看有些费解,参考了大佬的思路后我自己重新实现了一遍,此题对思维训练很有帮助。

思路大佬博客中介绍的很清楚了http://blog.csdn.net/m0_37650263/article/details/77938968?locationNum=2&fps=1

下面是java代码:

import java.util.*;
public class Main
{
    public static void main(String []args)
    {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int L=sc.nextInt();
        int parent[]=new int[n-1];
        for(int i=0;i<n-1;i++)
            parent[i]=sc.nextInt();
        int node_len[]=new int[n];
        node_len[0]=1;
        for(int i=0;i<n-1;i++)
        {
            node_len[i+1]=node_len[parent[i]]+1;
        }
        Arrays.sort(node_len);
        int node_MaxDepth=node_len[node_len.length-1];
        if(node_MaxDepth>L)
            System.out.print(L+1);
        else{
            int left=L-(node_MaxDepth-1);
            int left_city=(left/2);
            System.out.print(left_city+node_MaxDepth);
        }
    }
}

[编程题]java实现游历魔法王国相关推荐

  1. 【网易编程题】小易魔法王国采购魔法神器

    原题: 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币. 魔法机器1:如果投入x个 ...

  2. 网易编程题 游历魔法王国 (Python)

    游历魔法王国(python) 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多 ...

  3. java 魔法王国,游历魔法王国

    60 只要找到最长的一条路径就好,只要保证最长路径只走一次,多余的步数再去访问其他节点,就能计算能够访问的最多节点数. (1) 如果允许走的步数L小于等于最长路径,那么就直接只在最长路径上走,这样可以 ...

  4. 网易2018校园招聘:游历魔法王国 [python]

    ''' [编程题] 游历魔法王国 时间限制:1秒 空间限制:32768K 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当 ...

  5. 经典笔试编程题--Java实现

    转载自  经典笔试编程题--Java实现 1.输入一个正数n,输出所有和为n的连续正数序列.  分析:设定两个指针,min指向和为n的连续正数序列的最小值,max指向和为n的连续正数序列最大值.sum ...

  6. 西安交通大学915考研--编程题Java代码踩坑(2020年真题)

    西安交通大学915考研–编程题Java代码踩坑(2020年真题) 目录 西安交通大学915考研--编程题Java代码踩坑(2020年真题) 2020.1--寻找方程组的解 2020.2--几组数中筛选 ...

  7. 网易2018校招——04.游历魔法王国

    游历魔法王国 **  魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树.   小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行 ...

  8. 魔法王国java_网易编程题-游历魔法王国(深度优先遍历)

    魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次. 如果小易到达过某 ...

  9. 网易2018编程题之游历魔法王国

    题目描述: 魔法王国一共有n个城市,编号为0~n-1号,n个城市之间的道路连接起来恰好构成一棵树. 小易现在在0号城市,每次行动小易会从当前所在的城市走到与其相邻的一个城市,小易最多能行动L次. 如果 ...

最新文章

  1. Unity----Scene加载问题
  2. IOS UISearchDisplayController 点击搜索出现黑条问题解决方案
  3. Tears in Heaven
  4. ajax序列化表单,再也不用通过data去一个个的传值了
  5. 格式化的盘要怎么恢复数据
  6. C++Primer模板
  7. TCP的拥塞控制机制
  8. 一文讲清数据治理、数据管理、数据资产管理区别,数据专家必看
  9. Log4j.xml配置日志按级别过滤并将指定级别的日志发送到ActiveMQ
  10. Flutter进阶第11篇: 调用原生硬件Api实现扫码 扫描条形码 扫描二维码
  11. 阿里巴巴前架构师 360 度无死角剖析微服务
  12. ubuntu skill
  13. [360优化]让360安全卫士比火绒还好用 #调教360
  14. Qt 之 QToolBox
  15. Java网络编程(BIO和NIO)
  16. TCP三次握手(详解)
  17. 华中科技大学计算机证书领取,华中科技大学计算机水平测试软考报名通知
  18. 3D pose estimation 综述
  19. vue组件深度传值provide、inject,值类型响应式的方法
  20. C 语言fseek, ftell调用失败(fseek返回非零值,ftell返回-1)

热门文章

  1. 异形隔离java剧情_异形隔离剧情发展是升级必走的道路
  2. 极致通缩和永动机模型,将推动 PlatoFarm 爆发
  3. 索尼文化变革催生低端DV
  4. 计算机无法安装win2008,安装win7或win2008提示安装程序无法创建新的系统分区的解决方法...
  5. 程序员:妹妹高考650多,她想选择互联网专业,我该怎么劝?
  6. window server 2003创建域控制器
  7. u盘不能从计算机辅助东西卷问题,U盘文件无法复制的原因分析及解决方法(图文详情)...
  8. Excel汉字转全拼以及首字母
  9. “速课小龙”项目冲刺
  10. applewatch与服务器连接中断,告诉你Apple Watch连不上iPhone该怎么办