UVA 839 Not so Mobile

旧城等待, 2022-01-06 11:45 247阅读 0赞

思路:

记得自己画个图。

1586717-20190314230449557-1968612645.png

  1. 1 // 题意:输入一个树状天平,根据力矩相等原则判断是否平衡。采用递归方式输入,0表示中间结点
  2. 2 // 算法:在“建树”时直接读入并判断,并且无须把树保存下来
  3. 3 #include<iostream>
  4. 4 using namespace std;
  5. 5 /*
  6. 6 先序输入
  7. 7 如果输入 0 2 0 4
  8. 8 cin>>W1>>D1>>W2>>D2
  9. 9 w1=0说明此位置还是一个节点,两边没有砝码,
  10. 10 所以继续递归,直到w1!=0,两边是砝码,然后根据距离和砝码算是否平衡
  11. 11 每次递归引用w,不停修改,w就是此位置的砝码的总质量
  12. 12 */
  13. 13 // 输入一个子天平,返回子天平是否平衡,参数W修改为子天平的总重量
  14. 14 bool solve(int& W) {
  15. 15 int W1, D1, W2, D2;
  16. 16 bool b1 = true, b2 = true;
  17. 17 cin >> W1 >> D1 >> W2 >> D2;
  18. 18 if (!W1) b1 = solve(W1);
  19. 19 if (!W2) b2 = solve(W2);
  20. 20 W = W1 + W2;//修改此位置的砝码的总质量
  21. 21 return b1&&b2 && (W1*D1 == W2*D2);
  22. 22 }
  23. 23
  24. 24 int main() {
  25. 25 int T, W;
  26. 26 cin >> T;
  27. 27 while (T--) {
  28. 28 if (solve(W)) cout << "YES\n"; else cout << "NO\n";
  29. 29 if (T) cout << "\n";
  30. 30 }
  31. 31 return 0;
  32. 32 }

转载于:https://www.cnblogs.com/fudanxi/p/10534283.html

发表评论

表情:
评论列表 (有 0 条评论,247人围观)

还没有评论,来说两句吧...

相关阅读

    相关 NYOJ 839 合并

    合并 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 0 描述 现在给你两堆数,每个堆中有n个数。你的任务是把这两个堆并成一个堆,并把合并后的

    相关 SUI Mobile

    page集合容器   page集合容器,里面可以放多个平行的page。其他page 作为内联页面由路由控制展示 <!-- page 容器 -->