码迷,mamicode.com
首页 > 其他好文 > 详细

Not so Mobile UVA 839

时间:2014-09-11 15:21:51      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:acm   c   uva   源代码   算法   

说说:

还是简单的二叉树遍历的题目。这道题不过是将一棵树的左右子树作为杠杆。若存在左子树于相应距离的乘积和右子树相应距离的乘积不等,或者说不平衡,则输出NO。全部平衡,则整棵树平衡,输出YES。解法的话,递归判断即可。

源代码:

#include <stdio.h>

int mobile(int*);

int main(){
  int T,w;
  //freopen("data","r",stdin);
  scanf("%d",&T);
  while(T--){
    if(mobile(&w))
      printf("YES\n");
    else
      printf("NO\n");

    if(T) putchar('\n');
  }

  return 0;
}

int mobile(int *w){
  int wl,wr;
  int dl,dr;
  int r1,r2;

  scanf("%d%d%d%d",&wl,&dl,&wr,&dr);
  r1=r2=1;//注意要先赋值

  if(wl==0)
    r1=mobile(&wl);
  if(wr==0)
    r2=mobile(&wr);

  *w=wl+wr;//子树的总重量

  if(wl*dl!=wr*dr||!r1||!r2)//本身或左右子树不平衡,则不平衡
    return 0;
  else 
    return 1;
}


Not so Mobile UVA 839

标签:acm   c   uva   源代码   算法   

原文地址:http://blog.csdn.net/u011915301/article/details/39206607

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!