题目描述
最近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、循环的时候注意连接部分的逻辑关系要弄清楚(比赛的时候耐心分析)