OJ上题目:一家人 求帮助
题目描述最近小明交了一个新朋友叫小宇,他们在聊天的时候发现500年前他们竟然是一家人!现在小明想知道小宇是
他的长辈,晚辈,还是兄弟。
输入格式
输入包含多组测试数据。每组首先输入一个整数N(N<=10),接下来N行,每行输入两个整数a和b,表示a
的父亲是b(1<=a,b<=20)。小明的编号为1,小宇的编号为2。
输入数据保证每个人只有一个父亲。
输出
对于每组输入,如果小宇是小明的晚辈,则输出“You are my younger”,如果小宇是小明的长辈,则输出
“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
原文链接:http://zju.acmclub.com/index.php?app=problem_title&id=1037&problem_id=1032 求思路。。我主要不知道2个人之前的联系应该怎么样存储?求解。 我脑袋笨………………看了半天才看懂了题意是什么 #include <stdio.h>
int main()
{
int num,son,fat;
int a={1,0}; //本人,辈级
int b={2,0};
scanf("%d",&num);
while(num--)
{
if(a == b)break;
scanf("%d%d",&son,&fat);
if(son == a){
a = fat;
a++;
}
if(son == b){
b = fat;
b++;
}
}
if(a > b)
printf("You are my elder.\n");
else if( a < a)
printf("You are my younger.\n");
else
printf("You are my brother.\n");
return 0;
}
只是实现了样例,其中还有许多需要思考的,你自己改改吧 研究了一下如果我要是输入
3
1 3
2 5
3 4
我是不是应该打印无解呢???? 楼主看看 此题出题不够严谨 开始说一定会有解的,一定有关系,但是后面的数据输入又是任意输入,这样可能会出现输入的数据不能够证明他们是一家人 看了上面的代码,我知道了我似乎一点编程的思维都没有,里面有几个错误,楼主改改,再做些数据输入预处理就好了 elvo 发表于 2014-10-16 20:57
只是实现了样例,其中还有许多需要思考的,你自己改改吧
谢了,让我看见了能够这样把这两个数关联起来。。其他我自己就能够实现的。。本来我也想让一个变量来进行累加。。但是就是不够清晰。。所以谢谢了 cong 发表于 2014-10-16 21:37
看了上面的代码,我知道了我似乎一点编程的思维都没有,里面有几个错误,楼主改改,再做些数据输入预处 ...
同样感谢帮助。 总算解决了。。结合楼上的代码在根据其他人的。贴上自己最后的代码
#include <stdio.h>
int main()
{
int num,son,fath;
int a = {1,0}; //本人,辈级
int b = {2,0};
int fami; //将整个关系直接存在数组中。
while(~scanf("%d",&num))
{
a = 1;
a = 0;
b = 2;
b = 0;
memset(fami,-1,sizeof(fami));
while(num--)
{
scanf("%d%d",&son,&fath);
fami = fath;
}
while(fami] > 0)
{
a++;
a = fami];
}
while(fami] > 0)
{
b++;
b = fami];
}
if(a > b)
{
printf("You are my elder\n");
}
else if(a < b)
{
printf("You are my younger\n");
}
else
{
printf("You are my brother\n");
}
}
return 0;
}
页:
[1]