uva 839

原题

简单题, 用杠杆原理判断是否平衡

没有经验, 一开始就构造了一个struct, 

但是AC之后去翻了别人的代码, 发现没啥必要

因为这些数据判断完一次就没用了, 干嘛要存起来呢

还有就是又被这个坑给坑到了....

两个case之间需要空行 , 意味着最后一个case输出完后不需要空行

牢记!!!! 

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <deque>
#include <map>
#include <list>
#include <cassert>
#include <iomanip>

using namespace std;
/*
uva 839
注意 :  1.不需要存储, 仅仅是用于判断的情况下可以不用自己构造struct, 因为判断完一次数据就没用了 
		2.凡是题目提到两个case之间需要空行的, 要知道最后一个case结果输出完毕就不能有空行了 
*/

bool isBalance;

struct mobile{
	int W1,W2;
	int D1,D2;
	mobile * left, *right;
	mobile(){ W1=W2=D1=D2=0; 
			  left = right = NULL;	}
};
typedef mobile * Node;

Node GetNode(){
	Node res = new mobile;
	cin >> res->W1 >> res->D1 >> res->W2 >> res->D2;
	if( res->W1==0 ){
		res->left = GetNode(); 
		res->W1 = res->left->W1 + res->left->W2;
	}
	if( res->W2==0 ){
		res->right = GetNode(); 
		res->W2 = res->right->W1 + res->right->W2;
	}
	if( res->W1*res->D1 != res->W2*res->D2 ){
		isBalance = false;
	}
	return res;
}

void Delete(Node node){
	if( node->left ) Delete(node->left);
	if( node->right ) Delete(node->right);
	delete node; 
	return ;
} 

int main(){
//	freopen("input2.txt","r",stdin);
	int T, W1,W2,D1,D2;
	scanf("%d  ",&T);
	while( T-- ){
		isBalance = true;
		Node root = GetNode();
//		cout << root->W1 << " " << root->W2 << endl;
		if( isBalance ){
			cout << "YES" << endl;
		}else{
			cout << "NO" << endl ;
		}
		if( T ) cout << endl;
	}
	return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值