1 条题解
-
0
这个算法有个坑在于输入的数据并不一定是顺序的(比如输入可以是4 3 5,2 4,1 3,3 4 ),我一开始的算法就是误以为顺序输入导致测试集一直过不了(推测),于是只好将所有输入存入数组进行搜索来解决
import java.util.Scanner; public class P1006 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextInt()){ int count = sc.nextInt(); int node1 = 1;//小明初始编号 int node2 = 2;//小宇初始编号 int[] arr1 = new int[count];//数组1存儿子节点 int[] arr2 = new int[count];//数组2存父亲节点 for (int i = 0; i < count; i++) { arr1[i] = sc.nextInt(); arr2[i] = sc.nextInt(); } int node1Count = CalculateNodeCount(node1, arr1, arr2); int node2Count = CalculateNodeCount(node2, arr1, arr2); //比较计数器值确定关系 if(node1Count > node2Count){ System.out.println("You are my elder"); } else if (node1Count < node2Count) { System.out.println("You are my younger"); }else { System.out.println("You are my brother"); } } } //计算辈分的方法 /*实现机制是在儿子集(arr1)搜索node,如果搜索到,获取index,将父亲集(arr2)对应index的值赋给node, 计数器增加,直到儿子集合搜索不到node,结束循环,返回计数器值*/ public static int CalculateNodeCount(int node, int[] arr1, int[] arr2) { int count = 0; for(;;){ boolean judge = true; if(arr1.length == 0){ break; } for (int i = 0; i < arr1.length; i++) { if(node == arr1[i]){ node = arr2[i]; count++; judge = false; break; } } if(judge){ break; } } return count; } }
信息
- ID
- 7
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 10
- 标签
- 递交数
- 10
- 已通过
- 2
- 上传者