一家人

题目描述

最近zzq交了一个新朋友叫cj,他们在聊天的时候发现500年前他们竟然是一家人!现在zzq想知道cj是他的长辈,晚辈,还是兄弟。

输入

输入包含多组测试数据。每组首先输入一个整数N(N<=10),接下来N行,每行输入两个整数a和b,表示a的父亲是b(1<=a,b<=20)。zzq的编号为1,cj的编号为2。
输入数据保证每个人只有一个父亲。

输出

对于每组输入,如果cj是zzq的晚辈,则输出“You are my younger”,如果cj是zzq的长辈,则输出“You are my elder”,如果是同辈则输出“You are my brother”。

样例输入

5
1 3
2 4
3 5
4 6
5 6
6
1 3
2 4
3 5
4 6
5 7
6 7

样例输出

You are my elder
You are my brother

题意描述:
输入关系数N(N<=10)和N种关系(其中a的父亲是b)(1<=a,b<=20)
计算并输出编号1和编号2的关系

解题思路:
用数组记录他们的关系,下标表示编号,该下标的数组中记录他的父亲
再分别以c1和c2为计数变量,用while()循环计数他们到祖宗的辈分数
比较c1和c2的大小,输出对应的关系即可

代码实现:
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,c1,c2,i,m[21],a,b;
 5     while(scanf("%d",&n) != EOF)
 6     {
 7         for(i=0;i<=21;i++)
 8             m[i]=0;
 9         for(i=1;i<=n;i++)
10         {
11             scanf("%d%d",&a,&b);
12             m[a]=b;
13         }
14         
15         c1=0;
16         i=1;
17         while(m[i])
18         {
19             //printf("%d的父亲是%d
",i,m[i]);
20             c1++;
21             i=m[i];
22         }
23         
24         c2=0;
25         i=2;
26         while(m[i])
27         {
28             //printf("%d的父亲是%d
",i,m[i]);
29             c2++;
30             i=m[i];
31         }
32         
33         if(c2<c1)
34         printf("You are my elder
");
35         else if(c2==c1)
36         printf("You are my brother
");
37         else
38         printf("You are my younger
");
39     }
40     return 0;
41 }

测试输入:
3

1 3

2 4

4 3

3

1 3

3 4

2 4

2

1 3

2 3

测试输出:

You are my younger

You are my elder

You are my brother

易错分析:
1、循环的时候注意连接部分的逻辑关系要弄清楚(比赛的时候耐心分析)




原文地址:https://www.cnblogs.com/wenzhixin/p/7221412.html