例题6-9 UVa839 Not so Mobile(树)
题意:
看白书
要点:
书上的代码倒是简洁,自己写是写不出这么简洁的,递归还是差点
#include<stdio.h>
#include<stdlib.h>
bool build(int &w) //这里传递地址改变w的值
{
int w1, w2, d1, d2;
bool b1 = true, b2 = true;
scanf("%d%d%d%d", &w1, &d1, &w2, &d2);
if (!w1) b1=build(w1); //这里其实改变了w1的值
if (!w2) b2=build(w2);
w = w1 + w2;
return b1&&b2 && (w1*d1 == w2*d2);
}
int main()
{
int t,w;
scanf("%d", &t);
while (t--)
{
if (build(w))
printf("YES\n");
else
printf("NO\n");
if (t)
printf("\n");//隔一行输出
}
return 0;
}