zoukankan      html  css  js  c++  java
  • 紫书题目树状天平

    输入一个树状的天平,根据力矩相等的原则判断这个天平是不是平衡的,这一题的输入时采用递归的方式进行的,每次输入一行四个数字,第一和第三用来判断这个节点是不是作为了树根,如果是0,那么说明下面还有一颗子树,如果不是0那么就是这个天平的力臂的大小。

     
    这样的题目在一开始的时候我是完全蒙蔽的,一开始没有任何的思路啊,看了书之后才知道啊。因为这个题目的输入是按照递归的方法输入的,所以这里直接,一边输入一边计算。所谓的一边输入一边计算,是说,每次输入一行,判断第一个和第三个数字是不是0,如果是0,那么就先进行以这个节点为树根的子树的力矩的计算,先判断这颗子树是不是平衡的,如果这两个数字不是0,那么就直接的进行判断这棵树是不是平衡的,之后在进行下一行的输入。这样一直到全部都已经输入完成,最后判断这个函数是不是完成了,进行判断是不是输出YES还是NO
    下面就是源代码
    #include<iostream>
     
    using namespace std;
     
    bool solve(int &W)
    {
        int W1,D1,W2,D2;
        bool b1=true,b2=true;
        cin>>W1>>D1>>W2>>D2;
        if(!W1) b1=solve(W1);
        if(!W2) b2=solve(W2);
        W=W1+W2;
        return b1&&b2&&(W1*D1==D2*W2);
    }
    int main()
    {
        int T,W;
        cin>>T;
        while(T--)
        {
            if(solve(W)) cout<<"YES\n";
            else cout<<"NO\n";
            if(T) cout<<"\n";
        }
        return  0;
    }
  • 相关阅读:
    php--点赞功能的实现
    php --图片加图片水印
    php--获取用户ip
    json
    js中eval()和$.parseJSON()的区别
    Js操作Select大全(取值、设置选中等等)
    phpexcel--导入excel表格
    远程服务器连接
    iis 重新安装后 重新注册asp.net
    筛选两个数组中不同的元素
  • 原文地址:https://www.cnblogs.com/yewa/p/7243547.html
Copyright © 2011-2022 走看看