1 条题解

  • 0
    @ 2023-12-21 17:29:43

    这个算法有个坑在于输入的数据并不一定是顺序的(比如输入可以是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;
        }
    }
    
    • 1

    信息

    ID
    7
    时间
    1000ms
    内存
    32MiB
    难度
    10
    标签
    递交数
    10
    已通过
    2
    上传者