首页 > 代码库 > UVa 839 天平

UVa 839 天平

题意:天平的两端,每端的重量 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;   
}


UVa 839 天平