Uva 839 Not so Mobile
题意:给你一个杠杆两端的物体的质量和力臂,如果质量为零,则下面是一个杠杆,判断是否所有杠杆平衡.
分析:这道题采用的是递归的方式来输入,如果一个一个存取然后再判断会相当麻烦,那么就采取递归读入的方式,在读入的同时判断当前天平是否平衡,利用引用来传递参数.
一般的,如果输入采用递归的方式,而且题目也有一定的递归性质,我们可以尝试边输入边统计.
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int T,W; bool build(int &W) { int d1, d2, w1, w2; scanf("%d%d%d%d", &w1, &d1, &w2, &d2); bool flag1 = true, flag2 = true; if (!w1) flag1 = build(w1); if (!w2) flag2 = build(w2); W = w1 + w2; if (flag1 && flag2 && w1 * d1 == w2 * d2) return true; else return false; } int main() { scanf("%d", &T); while (T--) { if (build(W)) printf("YES\n"); else printf("NO\n"); if (T) printf("\n"); } return 0; }