首页 > 其他分享 >uva839 (二叉树+递归)

uva839 (二叉树+递归)

时间:2023-02-03 10:33:33浏览次数:62  
标签:递归 d1 天平 uva839 二叉树 w1 include d2 w2


题目链接:​​点击这里​

题目大意就是根据干杠平衡原理,判断题目所给出的数据组成的天平能否平衡。注意,此天平可能包含子天平。输入时,如果w为0,则表示包含子天平,子天平按照先左后右的方法输入。

解题思路: 这是二叉树的问题,数据的输入就好比先序遍历。(判断有无子节点就是判断w是否为0)。。 本题需要思考两点: 第一个如何判断子天平平和 第二个如何判断父天平是否平衡。第一点题目已经给出了公式。子天平只需要判断w1*d1==w2*d2是否正确即可。那么父天平又如何判断呢? 公式一样,不同的是,父天平的两边的重量是子天平砝码总和。  根据这两个思路,不难相处,在进行先序遍历时,需要一个参数m用来获取子天平的总质量。

AC代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stdlib.h>
#include<queue>
#include<map>
#include<iomanip>
#include<math.h>
using namespace std;

int i,j,k,l;

bool flag;
int slove()
{
int w1,d1,w2,d2;
cin>>w1>>d1>>w2>>d2;
if(w1&&w2&&d1&&d2)
{
if(w1*d1!=w2*d2)
{
flag=1;
return 0;
}
else return (w1+w2);
}
else
{
if(!w1)
w1=slove();
if(!w2)
w2=slove();
if(w1*d1!=w2*d2)
{
flag=1;
return 0;
}
else return (w1+w2);
}
}
int main()
{
int n;
cin>>n;
while(n--)
{
flag=0;
slove();
if(!flag)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
if(n!=0)
printf("\n");
}
return 0;
}

标签:递归,d1,天平,uva839,二叉树,w1,include,d2,w2
From: https://blog.51cto.com/u_15952369/6035452

相关文章

  • 力扣654 最大二叉树
    题目:给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建:创建一个根节点,其值为nums中的最大值。递归地在最大值左边的子......
  • C语言学习: 快速排序(递归方式)
    1#include<stdio.h>2#include"io_utils.h"3#include<stdlib.h>4#include<time.h>56#definePLAYER_COUNT5078voidSwapElements(intarray[......
  • 力扣106 从中序与后序遍历序列构造二叉树
    题目:给定两个整数数组inorder和postorder,其中inorder是二叉树的中序遍历,postorder是同一棵树的后序遍历,请你构造并返回这颗二叉树。示例:输入:inorder=[9......
  • 二叉树的不同形态
    题目简介给定二叉树T(树深度H<=10,深度从1开始,结点个数N<1024,结点编号1~N)的层次遍历序列和中序遍历序列,输出T从左向右叶子结点以及二叉树先序和后序遍历序列。输入格式输......
  • LeetCode 对称二叉树算法题解 All In One
    LeetCode对称二叉树算法题解AllInOne对称二叉树原理图解101.SymmetricTree对称二叉树https://leetcode.com/problems/symmetric-tree/https://leetcode.c......
  • 递归的简单应用
    [递归]母牛的故事(C语言代码)-Dotcpp编程社区(题目在这)1#include<stdio.h>2//找到规律最重要,先尽量多写几个例子,找规律3intf(intn){4if(n<=3)returnn;......
  • leetcode-543二叉树直径
    //leetcodesubmitregionbegin(Prohibitmodificationanddeletion)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;......
  • 青蛙跳台阶 递归 C语言
    青蛙跳台阶也是一道经典的递归题:一个青蛙,一次可以跳一级台阶,也可以一次跳两级台阶,问当跳n级台阶,有多少种跳法到n等于4的时候,我们发现并不是n=种类那么简单,如果数学底子好,......
  • 【DFS】LeetCode 124. 二叉树中的最大路径和
    题目链接124.二叉树中的最大路径和思路一个子树内部的最大路径和=左子树提供的最大路径和+根节点值+右子树提供的最大路径和。即dfs(root.left)+root.val+dfs(r......
  • 二叉树的递归遍历
    二叉树遍历前序遍历staticList<Integer>list=newArrayList<>();//前序遍历publicstaticList<Integer>preorderTraversal(TreeNoderoot){if(......