解题思路: 动态规划来解
1. 从念头序列的最后一个念头开始往前遍历分析每一个念头
2. 寻找待分析念头的源念头(from[i]=0) 并记录当前念头数 sum
3. 当遍历下一个念头时 更新最长念头数max
注意事项:
参考代码:
public class brokenThought { public static int solve(int [] from) { int max=0; //最长念头数 int sum; //动态统计当前因果念头的数量 int j; for(int i=from.length-1;i>0;i--) { //从后往前遍历每一个念头 去寻找它的源念头 sum=1; //每分析念头源念头时 当前念头数总为1 j=i; //提取正在遍历的念头 while(from[j]!=0) { j=from[j]; //分析这个念头的源念头 这个念头去访问上一个念头 再访问上一个念头 sum++; } max=max>sum?max:sum; //每分析完一个念头 就与当前最长比较 } return max; } public static void main(String[] args) { Scanner s=new Scanner(System.in); int n=s.nextInt(); int from[]=new int[n+1]; //from数组用于记录念头数量 for(int i=1;i<from.length;i++) { from[i]=s.nextInt(); } System.out.println(solve(from)); } }
0.0分
1 人评分
字符串对比 (C语言代码)浏览:1471 |
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:674 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1334 |
简单的a+b (C语言代码)浏览:661 |
矩阵乘方 (C语言代码)浏览:1079 |
局部变量作函数返回值的问题浏览:1028 |
C二级辅导-等差数列 (C语言代码)浏览:806 |
Quadratic Equation (C语言代码)浏览:1034 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:985 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:751 |