UVA839 天平 Not so Mobile

简介: UVA839 天平 Not so Mobile

题目描述:


20210501152344481.png

输入

1
0 2 0 4
0 3 0 1
1 1 1 1
2 4 4 2
1 6 3 2

输出

YES

思路:使用递归进行模拟 要注意输出格式中的空格.

#include<bits/stdc++.h>
using namespace std;
int n;
bool flag=true;//做标记 
int solve(){
  int w1,w2,d1,d2;
  cin>>w1>>d1>>w2>>d2;
  if(!w1)
    w1=solve();
  if(!w2)
    w2 = solve(); 
  if(w1*d1!=w2*d2){
    flag = false;
    return 0;//该天平不平衡 
  }else{
    return w1+w2;//平衡则返回该子天平的总重量. 
  } 
}
int main()
{
  cin>>n;
  while(n--){
    flag = true;
    solve();
    if(!flag){
      cout<<"NO"<<endl;
    }else{
      cout<<"YES"<<endl;
    } 
    if(n){
      cout<<endl;
    }
  }
  return 0;
}

下面是刘汝佳算法书的代码,分析学习一下,思路都一样,但代码写的很精辟.

#include<bits/stdc++.h>
using namespace std;
//输入一个子天平,返回天平是否平衡,参数W修改为子天平的总重量。
bool solve(int &W){
  int W1,D1,W2,D2;
  bool b1=true,b2=true;
  scanf("%d%d%d%d",&W1,&D1,&W2,&D2);
  if(!W1)b1=solve(W1);
  if(!W2)b2=solve(W2);
  W=W1+W2;//W1,W2用来表示当前左右子天平的质量,W用来存储当前天平的总质量.
  return b1&&b2&&(W1*D1==W2*D2);//每一边的天平,只要有一个不平衡,则返回值会一直是false.
}
int main(){
  int T,W;
  scanf("%d",&T);
  while(T--){
    if(solve(W))printf("YES\n");
    else printf("NO\n");
    if(T)printf("\n");
  }
}
相关文章
HDU-2897,邂逅明下(巴什博弈)
HDU-2897,邂逅明下(巴什博弈)
|
算法
HDU - 2063: 过山车
HDU - 2063: 过山车
143 0
HDOJ 1302(UVa 573) The Snail(蜗牛爬井)
HDOJ 1302(UVa 573) The Snail(蜗牛爬井)
139 0
|
定位技术
洛谷 P2805 BZOJ 1565 植物大战僵尸
题目描述 Plants vs. Zombies(PVZ)是最近十分风靡的一款小游戏。Plants(植物)和Zombies(僵尸)是游戏的主角,其中Plants防守,而Zombies进攻。该款游戏包含多种不同的挑战系列,比如Protect Your Brain、Bowling等等。
920 0
|
人工智能 Java C++
HDU 3785 寻找大富翁
寻找大富翁 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6716    Accepted Submission(s): 2492 Problem Description 浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁.
1096 0
HDOJ/HDU 1328 IBM Minus One(水题一个,试试手)
Problem Description You may have heard of the book ‘2001 - A Space Odyssey’ by Arthur C. Clarke, or the film of the same name by Stanley Kubrick.
1038 0