二叉搜索树【 HDU - 3791 】

判断一个序列(从1—N,N<=10)的出栈序列是否合法 判断一个序列(从1—N,N<=10)的出栈序列是否合法,合法序列输出YES,非法输出NO。 例如:N=3,输入序列:1 2 3 或1 3 2 或2 1 3 或2 3 1 或3 2 1 均为合法。 输入:3 1 2 为非法。 立即下载

判断两序列是否为同一二叉搜索树序列

Input

开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。

Output

如果序列相同则输出YES,否则输出NO

Sample Input

2
567432
543267
576342
0

Sample Output

YES
NO

题意:

根据二叉搜索树的生成规则先将一开始的序列生成一个二叉搜索树用ss[]存储起来,

然后输入n个序列,

每一个序列都生成一个二叉搜索树建立一个临时数组存储,比较两个数组是否相同,

相同输出“YES”,不同输出“NO”。

代码:

#include<map>
#include<string>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
map<int,string>m,h;
map<string,int>w,q;
int s[15],c[15],n,l,b;
char ss[15],cc[15];

int dfs1(string t)
{
    if(w.find(t)==w.end())
    {
        w[t]=b;
        m[b]=t;
        return 1;
    }
    if(w[t]>b)
        if(dfs1(t+'0'))
            return 1;
    if(w[t]<b)
        if(dfs1(t+'1'))
            return 1;
}
int dfs2(string t)
{
    if(q.find(t)==q.end())
    {
        q[t]=b;
        h[b]=t;
        return 1;
    }
    if(q[t]>b)
        if(dfs2(t+'0'))
            return 1;
    if(q[t]<b)
        if(dfs2(t+'1'))
            return 1;
}

int main()
{
    while(~scanf("%d",&n),n)
    {
        m.clear();     //清空 
        w.clear();
        scanf("%s",ss);   //字符串输入  ss[] 
        for(int i=0; ss[i]!='\0'; i++)   //数字储存 s[]
            s[i]=ss[i]-'0';
        l=strlen(ss);      //测长度 
        m[s[0]]="0";        // “0”是字符串常量,字符串常量是由一对双引号括起的字符序列。
        w["0"]=s[0];
        for(int i=1; i<l; i++)
        {
            b=s[i];
            dfs1("0");
        }
        sort(s,s+l);
        for(int i=0; i<n; i++)
        {
            scanf("%s",cc);
            h.clear();         //清空 
            q.clear();
            for(int j=0; cc[j]!='\0'; j++)
                c[j]=cc[j]-'0';
            h[c[0]]="0";
            q["0"]=c[0];
            for(int j=1; j<l; j++)
            {
                b=c[j];
                dfs2("0");
            }
            int flag=0;
            sort(c,c+l);
            for(int j=0; j<l; j++)
                if(s[j]!=c[j]||m[s[j]]!=h[c[j]])
                    flag=1;
            if(flag)
                printf("NO\n");
            else
                printf("YES\n");
        }
    }
    return 0;
}

 

相关推荐

MUSIC算法翻车?Toeplitz矩阵重构如何解决DOA估计中的相干信源难题

本文深入探讨了MUSIC算法在相干信源DOA估计中失效的根本原因,并详细介绍了基于Toeplitz矩阵重构的协方差矩阵修复技术。该方法通过凸优化恢复协方差矩阵的理想结构,有效解决了信号子空间秩亏损问题,从而显著提升了MUSIC算法在相干和多径场景下的分辨精度与稳健性。

a2b3c4d5e的博客 249

二叉搜索树 hdu 3791

二叉搜索树 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 17   Accepted Submission(s) : 11 Font: Times New Roman | Verdana | Georgia Font

纯纯的心儿的专栏 552

docker配置国内镜像源

【代码】docker配置国内镜像源。

愿听风成曲 9614

判断二叉搜索树是否相同,算法题

【代码来源】https://blog.youkuaiyun.com/RPG_Zero/article/details/100402135 【问题描述】 判断若干个序列是否为同一个二叉搜索树序列 【输入格式】 第一行输入一个数n,(1<=n<=20) 表示有n个序列需要判断,n= 0 的时候输入结束。第二行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二...

weixin_43479133的博客 555

机器学习系列(1)_逻辑回归初步

1、总述 逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。 2、由来     要说逻辑回归,我们得追溯到线性回归,想必大家对线性回归都有一定的了解,即对于多维空间中存在的样本点,我们用特征的线性组合去拟合空间中点的分布和轨迹。如下图所示:     线性回归能对连续值结果进行预测,

寒小阳 13万+

网卡Inter (R) Wi-Fi 6 AX201突然故障 错误代码10,无法找到无线网络,蓝牙也无效了

问题描述 说来也是坑,简直就莫名其妙。早上在工位上,电脑一切正常(一直用的是无线网络),然后周五准备开周会了,所以拔掉电脑外接设备(电源线,鼠标,外接显示器)拿起电脑到会议室。到了会议室之后,无线网断开了(但一般是不会断开的,都在公司范围内),所以选择重连,但发现已经没有无线网络列表了。 电脑机型:联想YOGA 14s 2021 初步尝试 1、关闭开始飞行模式 - 无果 2、重启并重启 (因为前两天已经提醒过有windows更新,趁这个机会就更新并重启了)- 无果 3、下载鲁大师、驱动精灵、联想驱动管

疯狂的蜗牛 5万+

hdu 3791:二叉搜索树(数据结构,二叉搜索树 BST)

二叉搜索树 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 3   Accepted Submission(s) : 3 Font: Times New Roman | Verdana | Georgia Font Size: ← →...

weixin_34319374的博客 157

(nginx) nginx5 nginx https部署实战

综上所述,相比 HTTP 协议,HTTPS 协议增加了很多握手、加密解密等流程,虽然过程很复杂,但其可以保证数据传输的安全。所以在这个互联网膨胀的时代,其中隐藏着各种看不见的危机,为了保证数据的安全,维护网络稳定,建议大家多多推广HTTPS。SSL 证书费用很高,以及其在服务器上的部署、更新维护非常繁琐HTTPS 降低用户访问速度(多次握手)网站改用HTTPS 以后,由HTTP 跳转到 HTTPS 的方式增加了用户访问耗时(多数网站采用302跳转)

weixin_50382197的博客 1505

二叉排序树

点击打开链接 二叉排序树 Time Limit: 1000MS Memory limit: 65536K 题目描述 二叉排序树的定义是:或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。

cswhit的博客 348

1、Ka频段双极化低剖面卫通相控阵天线

设计了双馈口叠层十字缝隙耦合天线,采用“双线极化天线 +旋转馈电 + 移相控制”架构,采用双馈口的叠层十字缝隙耦合天线,并以 2 x2 阵列为主体,旋转排布实现二次圆极化,同时极化可切换,通过多层 PCB 工艺实现天线层、控制/电源层功分网终层、芯片层一体化集成,研制出 64 阵元的圆极化可切换发射天线,测试结果表明:天线工作 频段为 27.5 ~31 GHz,可实现60°扫描,法向轴比

qq_43416206的博客 4367

vscode配置matlab工作环境

前面有两篇文章我们分别讲了在vscode里面如何配置C语言环境和python环境,那两篇文章总体来说比较复杂,当然这篇也有许多有趣的问题。 附上链接: 文章目录matlab简介基本要求code runner插件与matlab相关的插件添加路径小结code runner是否支持更多语言更多选择另一个选择 matlab简介 MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 MATLAB是ma

Cachel Wood的博客 4540

二叉搜索树

题目描述:     判断两序列是否为同一二叉搜索树序列 输入:      开始一个数n(1&lt;=n&lt;=20),表示有n个需要判断,n=0的时候输入结束。接下去一行是一个序列,序列长度小于10,包含(0-9)的数字,没有重复数字,根据这个序列可以构造出一棵二叉搜索树。     接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判读这两个序列是否能组成同一棵二叉树。 输出: ...

qq_35490520的博客 383

【即插即用模块】Transformer篇 | TCSVT 2025 | DAFM:双注意力聚合+反向跨模态筛选,特征精准捕捉并融合!

本文提出了一种双模态注意力融合模块(DAFM),用于增强多模态图像融合任务中的特征交互。该模块通过双注意力聚合机制,结合自注意力与跨模态注意力,有效提升特征融合效果。DAFM采用可学习平衡因子动态调整注意力权重,并运用深度卷积降低计算复杂度。实验结果表明,该模块能显著提升多模态图像融合质量,适用于RGB-红外等双模态视觉任务。模块代码实现简洁,可直接集成到现有网络中作为特征融合层使用。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 175

hdu 3791 二叉搜索树

http://acm.hdu.edu.cn/showproblem.php?pid=3791 二叉搜索树 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1905Accepted Submission(s): 850 ...

diansitao5461的博客 125

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

HDU 3791 二叉搜索树

HDU 3791 二叉搜索树 判断两序列是否为同一二叉搜索树序列 Input开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。...

dbt3498的博客 101

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【HDU No. 3791】 二叉搜索树

【HDU No. 3791】 二叉搜索树

代码改变世界 363

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hdu3791二叉搜索树

hdu3791二叉搜索树     又是二叉搜索树的前序遍历。   1.建树会顺序影响整棵树的形状 2.记得释放资源 3.可以用双重指针和引用优化程序。。   代码某些printf() 是之前设置的断点,,可以无视之 #include using namespace std; struct BST { char ch; BST *lson,*rson; BST() {

Time flies 922

hdu3791(二叉搜索树构造)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3791 题目大意:给出若干行数列,其中第一行的数列为基本二叉搜索树的模式,剩下的数列都为需要比较的数列,若构造出的二叉搜索树与基本数列相同,则输出“YES”,否则输出“NO”; 解题思路:根据题目给出的数列构造二叉搜索树,然后循环遍历树,判断是否相等。因为题目较简单,实用数组进行简单的模拟,根据左子

Tworld 1154

二叉搜索树建树 hdu3999&hdu3791

二叉搜索树

weixin_46266058的博客 276

HDU3791 二叉搜索树【二叉搜索树】

二叉搜索树 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9645 Accepted Submission(s): 4265 Problem Description 判断两序列是否为同一二叉搜索树序列 Input 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。 接下去一行是一个序列,序列长度小

海岛Blog 745

二叉搜索树 HDU 3791

Problem Description 判断两序列是否为同一二叉搜索树序列 Input 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。 接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。 接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜

QAQ 339

二叉搜索树 HDU 3791

OJ:http://acm.hdu.edu.cn/showproblem.php?pid=3791 题意:给你一个长度不大于10的只有数字的字符串,字符串中不包含重复数字。 将这个字符串按顺序插入二叉搜索树。 然后再给你一些字符串,条件与上面一样。判断这些字符串生成的二叉搜索树与第一个字符串生成的二叉搜索树是不是一样的! 思路: 将第一个串插入二叉搜索树,前序遍历得到遍...

P19777的博客 231

HDU3791 二叉搜索树

二叉搜索树 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4041    Accepted Submission(s): 1760 Problem Description 判断两序列是否为同一二叉搜索树序列

Puya的博客 597

hdu 3791 二叉搜索树

1 /****************************************************************** 2 题目: 二叉搜索树(hdu 3791) 3 链接: http://acm.hdu.edu.cn/showproblem.php?pid=3791 4 算法: 二叉搜索树 5 思路: 因为二叉搜索树的中序遍历结果...

weixin_30522095的博客 101
上一篇: Functions again【 CodeForces - 789C】
下一篇: Nikita and string
Daisy's一乐景三
博客等级 码龄8年 2粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值