CSDN第25期编程竞赛部分题解报告

2023-05-16

第一题:分层遍历二叉树

时间限制:1000ms
内存限制:256M

题目描述

给定一棵二叉树,节点定义如下:

structNode{
	Node "pLeft:
	Node "pRight:
	int data;
};

要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出—行),每一层要求访问的顺序为从左到右,并将节点依次编号。

输入描述

输入—行字符串。1(2)表示2是1的子树。(1<=strlen(str)< =1000)

输出描述

输出二叉树的层次。每层占—行。

示例

输入

1(2(4,5(7,8)),3(6))

输出

1
2 3
4 5 6
7 8

题解

#include<bits/stdc++.h>
using namespace std;
const int N=1005;
struct node
{
    int l,r;
    int id;
}t[N];
int tot=0;
void build(string &s,int &p)
{
    int x=0;
    while(isdigit(s[p]))
        x=x*10+s[p++]-'0';
    ++tot;
    t[tot].id=x;
    p++;
    if(s[p]=='(')
    {
        p++;
        t[tot].l=tot+1;
        build(s,p);
        if(s[p]==',')
        {
            p++;
            t[tot].r=tot+1;
            build(s,p);
        }
        p++;
    }
}
vector<int>res[N];
void bfs(int u)
{
    queue<int>q;
    q.push(u);
    int cnt=0;
    while(q.size())
    {
        int len=q.size();
        for(int i=0;i<len;i++)
        {
            int v=q.front();
            q.pop();
            res[cnt].push_back(t[v].id);
            if(t[v].l)q.push(t[v].l);
            if(t[v].r)q.push(t[v].r);
        }
        cnt++;
    }
}
int main()
{
    string s;
    cin>>s;
    int p=0;
    build(s,p);
    bfs(1);
    for(int i=0;i<tot;i++)
    {
        for(int j=0;j<res[i].size();j++)
            cout<<res[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}

解题思路

  • 先用字符串输入,对于每一个数字,用一个结构体数组t记录下来,每一个数字都会拥有一个左子树和一个右子树,以及一个id编号。
  • 使用vector数组记录下每一层节点的数字,然后输出即可。

第二题:查找整数

时问限制:1000ms 内存限制:256M

题目描述

给定—个非降序的整数数组,数组中包含重复数字(重复数字很多),给定任意整数,对数组进行二分查找,返回数组正确的位置,始出函数实现。

a.连续相同的数字,返回最后一个匹配的位置
b.如果数字不存在返回-1。(测试用例仅做参考,我们会根据代码质量进行评分)

输入描述

第一行给定数组长度n,目标值tar。(1第二行给出n个整数a.(1

输出描述

按题目描述输出。

示例

输入

7 4
1 2 2 3 4 4 10

输出

5

题解

#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N];
int binary_search(int l,int r,int tar)
{
    while(l<r)
    {
        int mid=(l+r)/2;
        if(a[mid]<=tar)  l=mid+1;
        else    r=mid;
    }
    if(a[r]==tar) return r;
    else    return -1;
}
int main()
{
    int n,tar;
    cin>>n>>tar;
    for(int i=0;i<n;i++)
        cin>>a[i];
    cout<<binary_search(0,n-1,tar)<<endl;
    return 0;
}

解题思路

题目要求对数组进行二分查找,找到数组中任意一个与目标数tar相等的数,并返回它在数组中的位置。

二分查找的核心代码就是 while 循环,在 while 循环中判断 mid 与 tar 的关系,如果 a[mid]<=tar ,说明要查找的数在 mid 右边,更新 l=mid+1 ,否则说明在左边,更新 r=mid。

当 l>=r 时退出循环,判断 a[r] 是否等于 tar ,如果相等,说明找到了,返回 r ,否则说明没有找到,返回 -1。

注意:这里的代码写法是返回索引最后一个,如果要返回索引第一个,只需要在 while 循环结束后,将 r 替换为 l 即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSDN第25期编程竞赛部分题解报告 的相关文章

  • 用word2016 写CSDN 博客

    在word2016 中 点击文件 61 gt 共享 61 gt 发布至博客 下面点击 立即注册 在这个里面 选择其他 xff0c xff08 这里我说的是 CSDN 博客 xff09 http write blog csdn net xml
  • CSDN第25期编程竞赛部分题解报告

    第一题 xff1a 分层遍历二叉树 时间限制 1000ms 内存限制 256M 题目描述 给定一棵二叉树 节点定义如下 structNode span class token punctuation span Node 34 pLeft s
  • 2011,我和CSDN亲密接触的一年

    从CSDN刚刚发出这次征文活动的时候 xff0c 就有一种想参加的冲动 xff0c 总想说些什么 xff0c 迟迟直到今天才开始下笔 和大家一样 xff0c 我也是一名普通的计算机研发人员 xff0c 说挨踢者也行 xff0c 说码农亦可
  • Python模拟登录CSDN

    关于CSDN的模拟登录 xff0c 网上已经有相当一部分博主发过类似的文章 xff0c 我这里不过稍稍模仿下 xff0c 使用前辈们的经验时 xff0c 还是非常感激的 具体过程如下 xff1a xff08 1 xff09 确定登录页面的表
  • csdn代码片教程

    代码片 代码片功能是一项非常实用的重要功能 xff1a 该功能允许您仅上传一段代码而非整个项目 xff0c 并且您可以像管理git项目一样对代码片进行管理 使用代码片 xff0c 您可以 xff1a 很容易的创建 分享一段代码 在其它网页中
  • CSDN最全数学公式

    CSDN中的数学公式 1 加减乘除 a 43 b a 43 b a 43 b xff1a a 43 b a
  • 告别csdn一年了

    原本坚持了4年的学习 xff0c 整理笔记 xff0c 在csdn平台上进行发表 xff0c 记录 同朋友们互动 xff0c 探讨进行学习 xff0c 自己也在不断地成长 今天再次进入博客页面 xff0c 发现界面来了个大改版 xff0c
  • 如何快速转载CSDN中的博客

    前言 对于喜欢逛CSDN的人来说 看别人的博客确实能够对自己有不小的提高 有时候看到特别好的博客想转载下载 但是不能一个字一个字的敲了 这时候我们就想快速转载别人的博客 把别人的博客移到自己的空间里面 当然有人会说我们可以收藏博客啊 就不需
  • csdn添加可跳转的文章目录连接

    一篇文章最好只有一个目录 toc 这是文章标题 toc 自定义标题 自定义标题这样写
  • CSDN中如何转载他人的博客

    1 复制他人博客内容 打开需要转载的博客文章 在页面任意空白处点击鼠标右键 gt 检查 打开浏览器开发模式页面 在元素中找到名为article content的div 选中后右击 gt 复制 gt 复制 outerHTML 2 新写博客文章
  • 1步搞定CSDN生成头部目录

    在博客最上方输入 TOC 文章目录 即可实现生成目录 TOC 文章目录 效果图
  • JAVA-static关键字 多态

    static Java中的static关键字主要用于内存管理 我们可以应用static关键字在变量 方法 块和嵌套类中 static关键字属于类 而不是类的实例 被static修饰的数据在内存中只会存在一份数据 所以这个数据适合用来共享数据
  • markdown公式编号居右

  • CSDN博客修改不了头像的最新解决方法

    自己的博客不能改头像 清理缓存 换IE浏览器 都不行 以前有类似经历 可以在手机APP上修改头像 然后自动同步了 下载 CSDN APP 左上角 个人中心 点击 头像 修改就好了 我修改后没立即出来 延迟可能
  • csdn的Markdown行首缩进的两种方法,非常全

    csdn的行首缩进 鉴于不同编辑器的Markdown语法略微不同 故缩进也略不同 1 特殊占位符 不缩进 行首缩进 nbsp 行首缩进 160 四分之一中文占位符 行首缩进 8197 四分之一中文占位符 行首缩进 ensp 行首缩进 819
  • [CSDN] 批量导出博客markdown文件

    需求 为了备份或者迁移博客 需要导出博客的md格式文件 除了 爬虫 自带导出功能 编辑模式 ctrl c ctrl v 之外还有一种十分方便的方法 一行命令导出法 方法 进入 404页面 https blog console api csd
  • 华为云云耀云服务器L实例评测|使用宝塔面板管理服务器教学

    目录 一 概述 1 1 华为云云耀云服务器L实例 1 2 BT 宝塔 1 3 资源和成本规划 二 购买云耀云服务器L实例并进行相关配置 2 1 购买云耀云服务器L实例 2 2 设置服务器密码 2 3 配置安全组 2 4 设置Nginx安全级
  • 惊呆!博主居然教粉丝爬虫爬取自己的文章

    三年前随便写的草稿忘记发布了 今天重新水一下 不知道还好用不 改天试跑一下 大概就是通过etree的方式采集页面的文章列表 然后遍历一下存储成markdown文件 PS 之前发的很多文章在各种公众号和CSDN博客中被搬运 其实也是爬虫我们的
  • 数字化时代-29:CSDN排名规则详细解读

    最近在CSDN的总榜单上一直徘徊在1000名出头 每周有二十多篇的新的原创文章 总积分也在持续增长 但排名一直没有进步 我很好奇 难道其他1000名左右的创造者的都这么疯狂 每周都会发表20篇以上的文章 于是怀着好奇心研读了一下CSDN排名
  • CSDN博文显示图片的方法

    感觉官方应该出一个教程的 不然新手第一次发博文十有八九会发现自己的博文发表之后没有图片 既然官方不给 那么自己摸索咯 参考 http blog csdn net cherish cx article details 52782644 1 编

随机推荐

  • PHP常用设计模式

    单例模式 单例模式顾名思义 xff0c 就是只有一个实例 作为对象的创建模式 xff0c 单例模式确保某一个类只有一个实例 xff0c 而且自行实例化并向整个系统提供这个实例 单例模式的特点 xff1a 三私一共 xff1a 1 私有的静态
  • 飞行控制器固件项目-对比介绍(Ardupilot、PX4、LibrePilot、OpenPilot)

    ArduPilot与Pixhawk什么关系 https zhuanlan zhihu com p 109639638 无人机开源项目 8个开源无人机项目 https blog csdn net cuml0912 article detail
  • 各种控制方法在抗干扰方面的区别

    一 由来 自适应控制 AdaptiveControl AC xff1a AC旨在处理由结构参数扰动引起的不良影响 AC的思想是首先在线识别受控系统的模型参数 xff0c 然后根据识别的模型参数调整控制参数以获得良好的性能 AC在处理模型参数
  • 【深入理解】export和module.export的区别

    内部原理 exports 61 module exports 61 exports 是module exports的引用 xff0c 怎么理解这句话呢 xff1f 大概就是 var a 61 var b 61 a a 和 b 之间的区别吧
  • 如何保证Service在后台不被杀死?

    一 前期基础知识储备 xff08 1 xff09 为什么要保证后台Service不被杀死 xff1f 提高应用存在感 对于大厂的应用来说 xff0c 其程序 活着 不是问题 xff0c 但是为了带来更好的用户体验 xff0c 提高用户粘性
  • mybatis generator时碰到的错误及解决办法

    这篇博客简单记录下自己使用mybatis generator时碰到的错误及解决办法 本人是在macOS下进行的下列操作 问题1 mybatis generator Cannot connect to database 解决办法 xff1a
  • C# 编写 WinForm 窗体应用程序(第一期)

    C 编写 WinForm 窗体应用程序 第一期 文章目录 C 编写 WinForm 窗体应用程序 第一期 WinForm窗体应用程序简述C 创建WinForm窗体应用程序C 窗体属性 1 创建一个名为 TestForm 的窗体 2 设置 T
  • npm删除项目所有依赖和清缓存

    清缓存的办法 xff0c 一个是 npm cache verify 还有一个方法npm cache clean force 删除项目所有依赖 npm uninstall 转载于 https www cnblogs com jimaww p
  • 【我的前端】CSS在Windows下实现Mac浏览器滚动条

    Windows实现Mac浏览器滚动条 文章目录 Windows实现Mac浏览器滚动条一 自定义滚动条外观二 滑块与滚动容器之间的间距三 将滚动条悬浮在内容之上四 滚动时才出现五 完整代码六 总结说明 x1f496 x1f496 x1f496
  • python经典案例:抓交通肇事者

    抓交通肇事者 x1f496 x1f496 x1f496 x1f495 x1f495 x1f495 欢迎来到本博客 x1f495 x1f495 x1f495 x1f496 x1f496 x1f496 x1f381 支持 xff1a 如果觉得博
  • 【Python初级人工智能精讲】用Paddlehub给一段没有标点符号的文字加上合适的标点符号

    Python初级人工智能精讲 文章目录 Python初级人工智能精讲一 写在前面二 七步精讲三 模型介绍四 进入实战1 源代码2 运行效果 1 cmd方面 2 txt文件运行前后对比 五 休吃霸王餐六 每日一句 一 写在前面 今天给分享的程
  • 深度解读互联网新时代:Web3.0

    文章目录 深度解读互联网新时代 Web3 0一 Web3 中心化网络的新兴名词二 Web3 全家福 三 Web3 是互联网的货币层四 Web3 是互联网的身份层五 Web3 通过售卖数据来牟利的反击六 Web3 还拥有平台本身的一种方式七
  • 《疫情下的编程岁月》第二章:选择学习语言

    文章目录 第二章 选择学习语言 2 1 常见的编程语言介绍 C语言 C Java Python JavaScript 2 2 选择适合自己的语言 考虑自己的兴趣和目标 了解各种语言的特点 尝试不同的语言 2 3 学习路线的规划 找到适合自己
  • 每日一练c++题目日刊 | 第十期

    文章目录 第一题 xff1a 二维矩阵中的最短路径题目描述输入格式输出格式数据范围输入样例输出样例解题思路 amp C 43 43 题解算法状态转移方程 第二题 xff1a 01 串的满足条件的个数题目描述输入格式输出格式数据范围输入样例输
  • 每日一练c++题目日刊 | 第八期

    文章目录 第一题 xff1a 夏洛克侦案题目描述输入格式输出格式输入样例输出样例解题思路 amp C 43 43 题解 第一题 xff1a 夏洛克侦案 题目描述 福尔摩斯接到了一个任务 xff0c 需要帮助一位富有的英国贵族解决一件谋杀案
  • 00后少年的心力之作(已开源) | heartt(心力算法)

    00后少年的心力之作 已开源 综合性极强的文本摘要算法 heartt 大家好 xff0c 我是 heartt 算法的作者 xff0c 一名热爱编程的学习者 今天 xff0c 我要向大家介绍我的新算法 xff1a heartt 文章目录 一
  • 初读《编程之美》就想秀一下,结果还翻车了

    文章目录 一 前言 二 我的思路 三 Code 四 翻车现场 五 后续问题 一 前言 如何写一个短小的程序 xff0c 让 Windows 的任务管理器显示CPU的占用率为50 这道有趣的面试题我是这两天从 编程之美 电子版中看到的 xff
  • 每日一练c++题目日刊 | 第十二期

    文章目录 第一题题目背景故事题目描述输入描述输出描述输入样例输出样例解题思路C 43 43 参考程序 第二题题目背景故事题目描述输入描述输出描述输入样例输出样例解题思路C 43 43 参考程序 第三题题目背景故事输入描述输出描述输入样例输出
  • 在TypeScript中如何在window上定义对象

    比如我们要在window上定义 Jim 最简单的方法就是将window强制类型转换成any xff0c 但是不推荐 xff01 window as any Jim 61 233 推荐方法 xff1a 在项目中找到 d ts 文件 加上以下代
  • CSDN第25期编程竞赛部分题解报告

    第一题 xff1a 分层遍历二叉树 时间限制 1000ms 内存限制 256M 题目描述 给定一棵二叉树 节点定义如下 structNode span class token punctuation span Node 34 pLeft s