一道需要把题目理解透彻的题目。一开始,我也是对题目大意似懂非懂。
这里有一个注意点:当父天平一端的子天平平衡时,该父天平一端的weight应该为子天平重量(这将影响父天平平衡的比较!!)
其次,这道题目虽然是树的题目,但并不需要去构建数的结构,这也提醒我们,一道数据结构题目并不一定一定要用上对应数据结构的创建,我们要将目光更多的转向解题思维。
主要代码:
#include<bits/stdc++.h> using namespace std; bool process(int &w){ int wl,wr,dl,dr; //天平的力与力臂 bool b1=true,b2=true; //判断一端是否平衡 cin>>wl>>dl>>wr>>dr; if (!wl) b1=process(wl); if (!wr) b2=process(wr); w=wl+wr; //切记要将子天平的总重量返回 return b1 && b2 && (wl*dl==wr*dr); } int main(){ int t,w=0; cin>>t; bool bol=true; while (t--){ bol=process(w); if (bol) printf("YES\n"); else printf("NO\n"); if (t) cout<<endl; } return 0; }
ps:别看代码简洁,但其中&w的使用和递归思想都是值得反复品味的
标签:process,题目,Mobile,天平,wl,uva839,int,so,wr From: https://www.cnblogs.com/purple123/p/17914160.html