递归

1057: 天平平衡 [递归]

题目描述
天平是一种衡器,是衡量物体质量的仪器。它依据杠杆原理制成,在杠杆的两端各有一小盘,一端放砝码,另一端放要称的物体,杠杆中央装有指针,两端平衡时,两端的质量(重量)相等。
现在递归地描述一个天平:
1.每个天平用两个正整数代表左右两端的质量。
2.如果左端或者右端的数字为0,代表这一端由子天平构成,那么在下一行描述这个子天平。
如:
0 0
0 2
1 1
2 2
代表天平:
一个天平平衡的条件:
1.天平的两端质量相同。
2.如果存在子天平,子天平平衡。
很显然上述天平是平衡的。
对于一个描述的天平,请判断是否达成平衡。
输入
每次测试只有一组数据。
给出一个天平,描述方式如上。
输出
如果所给天平平衡,输出“YES”,否则输出“NO”。
样例输入
0 0
0 2
1 1
2 2
样例输出
YES
第一道递归,也是第一次写博客。
这道题也没给我什么感悟,直接上代码。(自己没写出来)
#include<bits/stdc++.h>
int dfs(int n)
{
if(n==0)
{
int x,y;
scanf("%d %d",&x,&y);
if(x==0)
x=dfs(x);
if(y==0)
y=dfs(y);
if(x==y)
return x+y;
     else
     return -1;
}
else
return n;
}
int main()
{
int a,b;
while(~scanf("%d %d",&a,&b))
{
a=dfs(a);
b=dfs(b);
if(a==-1||b==-1||a!=b)
printf("NO\n");
else
printf("YES\n");
}
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值