题意:天平的两端,每端的重量 wl 和 wr ,每端到中点的距离 dl 和 dr ,要满足wl*dl==wr*dr才能保持天平平衡。天平的每端可以再系一个天平,该端的重量为该子天平的总重量。问最终天平是否能平衡。 这里的天平是指上面竖直一根系,系着一个水平的金属棒,金属棒的两端挂物体,要保持平衡,不要想成了放在桌子上的那种天平。 题目Not so mobile 翻译成天平应该是意译了吧,觉得还不如翻成平衡算了~
思路:主要是递归的思想。这里有这样一个问题,最后问的是所有天平都平衡呢还是最上面的那个,因为理论上如果子天平不平衡,但它的重量可能使得上层的天平还是可以平衡的~~我的理解是所有的天平都要平衡,用一个标记位来表示,全局变量。
注意:输出的时候。每两个结果之间要有一个空行,但如果只有一个结果则不需要空行。
也挺简单的,玩手机玩了一会儿,不然就连续切题了~
Code:
#include<stdio.h>
int dfs();
int flag;
int main()
{
int n;
scanf("%d",&n);
bool first=1;
while(n-->0)
{
flag=0;
dfs();
if(first)
{
first=0;
if(flag==0) printf("YES\n");
else printf("NO\n");
}
else
{
if(flag==0) printf("\nYES\n");
else printf("\nNO\n");
}
}
return 0;
}
int dfs()
{
int wl=0,wr=0,dl=0,dr=0;
scanf("%d %d %d %d",&wl,&dl,&wr,&dr);
if(wl==0) wl=dfs();
if(wr==0) wr=dfs();
flag+=!(wl*dl==wr*dr);
return wl+wr;
}