淘汰赛冠军问题

2023-10-31

问题描述:
有n个选手(n为2的K次方)进行比赛,两个选手中胜者参加下一场,负者出局,请求出最后的冠军。(比赛的胜负由cmp()函数决定,这里是比较两个字符的大小)。
分析:
本体很快可以想到两种方法,分治法和减治法。
分治法:
将选手平均分为两组,递归求出胜者;
减治法:
将选手分为n/2组,两两进行比较,胜者留在比较的数组范围中,直到只有一位选手为止;

分治法代码:

#include <iostream>

using namespace std;

int cmp(char a,char b);
int G(char r[],int low,int high);
int main()
{
    char a[100];
    int i,n;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    cout<<a[G(a,0,n-1)];
    return 0;
}

int G(char r[],int low,int high)
{
    if(high - low == 1)
    {
        if(cmp(r[low],r[high]))
            return low;
        else
            return high;
    }
    int m=(low+high)/2;
    int wl,wr;
    wl = G(r,low,m);
    wr = G(r,m+1,high);
    if(cmp(r[wl],r[wr]))
        return wl;
    else
        return wr;

}

int cmp(char a,char b)
{
    return a>b?1:0;
}

减治法代码:

#include <iostream>

using namespace std;

int cmp(char a,char b);
char G(char r[],int n);

int main()
{
    char a[100];
    int i,n;
    cin>>n;
    for(i=0;i<n;i++)
        cin>>a[i];
    cout<<G(a,n)<<endl;
    return 0;
}

char G(char r[],int n)
{
    int i = n;
    while(i>1)
    {
        i = i/2;
        for(int j=0;j<i;j++)
        {
            if(cmp(r[j+i],r[j]))
                r[j]=r[j+i];
        }
    }
    return r[0];
}

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

淘汰赛冠军问题 的相关文章

  • 淘汰赛冠军问题

    问题描述 有n个选手 n为2的K次方 进行比赛 两个选手中胜者参加下一场 负者出局 请求出最后的冠军 比赛的胜负由cmp 函数决定 这里是比较两个字符的大小 分析 本体很快可以想到两种方法 分治法和减治法 分治法 将选手平均分为两组 递归求
  • 图形学数学基础之基本蒙特卡罗尔积分(Monte Carlo Integration)

    作者 i dovelemon 日期 2017 07 29 来源 CSDN 主题 Monte Carlo Integration 引言 好久没有写博客了 最近一直在忙于工作 同时GLB库中关于PBR的渲染算法 一直卡住 无法实现下去 不过在这
  • 二进制中1的个数(java)

    一 问题描述 输入一个整数 输出该数二进制表示中1的个数 其中负数用补码表示 二 算法分析 方案一 任何一个十进制整数在机器上存储的都是二进制形式 如果该数为整数 则存储的就是该数的二进制形式 如果该数为负数 则存储的就是该数的二进制补码形
  • 520,我会处理回文数了,你会了么?(dp+中心扩散)

    给定一个字符串 s 找到 s 中最长的回文子串 你可以假设 s 的最大长度为 1000 示例 1 输入 babad 输出 bab 注意 aba 也是一个有效答案 示例 2 输入 cbbd 输出 bb 方法一 暴力匹配 Brute Force
  • 2014百度校招笔试

    1 ISO七层说明 2 用百度地图查询 百度大厦 到 北京大学 得到路线不太稳定是怎么回事 分析可能的原因 测试开发唯一区别于软件开发的一题 3 TCP UDP协议的区别 举出上一层的应用协议 二 算法 1 写出a0 a1 a2 an的所有
  • C/C++程序算法小练习--大整数减法

    大整数减法 include
  • 调整数组顺序使奇数位于偶数前面(java)

    一 问题描述 输入一个整数数组 实现一个函数来调整该数组中数字的顺序 使得所有的奇数位于数组的前半部分 所有的偶数位于位于数组的后半部分 并保证奇数和奇数 偶数和偶数之间的相对位置不变 二 算法分析 给定一个数组array 目标 调整数组中
  • 1477. 找两个和为目标值且不重叠的子数组

    1477 找两个和为目标值且不重叠的子数组 题目描述 样例1 样例2 样例3 样例4 示例 5 提示 解题思路 代码实现 题目描述 给你一个整数数组 arr 和一个整数值 target 请你在 arr 中找 两个互不重叠的子数组 且它们的和
  • 【转】那些年使用过MapReduce的论文

    MapReduce is a programming model for processing large data sets with a parallel distributed algorithm on a cluster It s
  • 深度优先查找和广度优先查找

    深度优先查找和广度优先查找 在人工智能和运筹学的领域中求解与图有关的许多应用中 这两个算法被 证明是非常有用的 并且 如需高效地研究图的基本性质 例如图的连通性以及图是否存 在环 这些算法也是必不可少的 深度优先查找 深度优先查找可以从任意
  • JS和Java实现链表类的基本功能

    综合网上实例 参考 http www 2cto com kf 201204 126773 html JavaScript实现参考 http m blog csdn net blog caiwenfeng for 23 8496029 Jav
  • 素数环问题(回溯法)

    素数环是一个计算机程序问题 指的是将从1到n这n个整数围成一个圆环 若其中任意2个相邻的数字相加 结果均为素数 那么这个环就成为素数环 现在要求输入一个n 求n个数围成一圈有多少种素数环 规定第一个数字是1 include
  • 算法——因子和阶乘

    题目描述 输入正整数n 2 lt n lt 100 把阶乘n 1x2x3x xn分解成素因子相乘的形式 从小到大输出各个素数 2 3 5 的指数 你的程序应忽略比最大素因子更大的素数 否则末尾会有无穷对个0 样例输入 5 53 样例输出 5
  • 青蛙跳台阶(java)

    一 问题描述 一只青蛙一次可以跳上1级台阶 也可以跳上2级 求该青蛙跳上一个n级的台阶总共有多少种跳法 二 算法分析 因为青蛙一次只能跳上1级台阶或者两级台阶 所以对于第n级台阶来说 青蛙只能从第n 1级台阶或者第n 2级台阶跳上 设青蛙跳
  • 搜狐畅游2018年9月15日校招真题(2)

    通过该道题目 题目描述 示例代码 include
  • 基于前馈神经网络(SLFN)的极限学习机-遗传算法相结合

    文章目录 一 极限学习机 1 1 概要 1 2 优点 1 3 不足 1 4 改进 二 前馈神经网络结构 2 1 构成 2 2 变量解释 2 3 求解 三 遗传算法 GA 3 1 概要 3 2 遗传算法流程 3 3 执行过程 一 极限学习机
  • 字典序问题

    问题描述 在数据加密和数据压缩中常需要对特殊的字符串进行编码 给定的字母表A 由26 个小写英文字母组成A a b z 该字母表产生的升序字符串是指字符串中字母按照从左到右出现的次序与字母在字母表中出现的次序相同 且每个字符最多出现1 次
  • 新学期阅读计划

    1 再认真阅读 设计模式之禅 在理解的基础上应用设计模式 2 编程之美 共4章 61个有意思的题目 3 图书馆借阅 算法导论 4 再阅读 算法之道 5 了解 操作系统导论 真正理解不要死记硬背 6 反复多次阅读经典的论文 特别是及时和师姐多
  • P2PSim中重要函数的说明

    环境 RedHat9上安装的P2Psim0 3 目的 在P2Psim使用Vivaldi协议仿真 现状 主程序代码中关于vivaldi协议的部分注释掉了 思路 从主函数分析代码 找到原因 vivaldi协议主函数是vivalditest C
  • 手把手教你实现一个向量

    文章目录 什么是向量 向量提供哪些接口 实现 宏定义 定义类 成员变量 构造函数与析构函数 构造函数 析构函数 成员函数 size get r put r e expand insert r e remove lo hi remove r

随机推荐

  • 如何领养微信聊天机器人

    我们知道 微信聊天机器人 订阅号本身就是一个机器人 所有用户粉丝都可以直接与其对话 然而订阅号机器人并不是自己的 如何能够拥有一个自己的机器人呢 领养属于自己的微信聊天机器人 可以获得如下功能 1 将个人微信账号转换为聊天机器人 与微信好友
  • 智能合约生成合约地址

    智能合约生成合约地址的第二种方式 Create2 以一道例题解释 计算地址有两种方式 Create keccak256 rlp encode deployingAddress nonce 12 Create2 keccak256 0xff
  • Mayor's posters (线段树+离散化)

    Mayor s posters 线段树 离散化 The citizens of Bytetown AB could not stand that the candidates in the mayoral election campaign
  • 在sqlserver2000数据库中怎么导入.bak文件

    打开企业管理器 新建一个数据库 右击选择还原数据库 选择从设备 选择添加 选择 bak文件 确定 从选项中选择在现有数据库上强制还原 确定 数据库中对数据的操作是一大重要技能 其中 数据的恢复和还原也是常做的事 不知你是否在数据库恢复时遇到
  • 空间复杂度

    基本概念 空间复杂度是对一个算法在运行过程中临时占用存储空间大小的一个量度 我们用 S n 来定义 计算方法 1 空间复杂度 O 1 如果算法执行所需要的临时空间不随着某个变量n的大小而变化 即此算法空间复杂度为一个常量 可表示为 O 1
  • 深度学习框架:tiny_dnn分析(1)—————VS2015编译

    深度学习已经很流行了 主流的框架现在有很多 本人一直以来都是使用的caffe 之前也分析过整个caffe的框架 整个框架相对来说第三方依赖库比较多 作为入门的分析不太合适 这里我想和大家分析的是tiny dnn 这是一个比较小巧的框架 非常
  • 【Qt】QWidget对样式表设置边框无效的解决方法

    1 现象 在对QWidget使用样式表时无效 QWidget MyWgt border 1px solid gray 2 原因 原因是QWidget只支持background background clip和background origi
  • 爆发在即的赛道:十大生态30家常用跨链桥盘点

    写给用户的跨链桥工具集指南 作者 Azuma 编辑 郝方舟 出品 Odaily星球日报 ID o daily 随着 Solana Avalanche Fantom 等公链的集体爆发 新兴生态的造富效应正在抬头 为了追逐这些全新的财富机会 用
  • Materials Studio安装教程

    Materials Studio安装教程简易分享 看过了太多安装教程 需要破解license 总结了一下 出一版简单直装的教程供大家讨论 安装包 安装包放在pan了 链接 https pan baidu com s 1iEVBzuDzE T
  • nuclei poc模板编写笔记(二)

    匹配器 匹配器允许对协议响应进行不同类型的灵活比较 非常易于编写 并且可以根据需要添加多个检查以实现非常有效的扫描 类型 可以在请求中指定多个匹配器 基本上有6种类型的匹配器 Matcher Type Part Matched status
  • openGL之API学习(十)glReadBuffer

    该函数主要是确定颜色缓冲区的来源 不会影响到深度 模板等缓冲区的读取 这里的设置将会影响到glReadPixels glCopyTexImage1D glCopyTexImage2D glCopyTexSubImage1D glCopyTe
  • 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法

    建立好一个Maven项目后 如果Java Resources资源文件下没有src main java文件夹 并且在手动创建这个文件时提示 已存在文件 这说明 在这个项目配置中已经有了src main java这个文件夹 至于为什么不显示 我
  • 人脸属性识别 - 使用多任务学习模型在CelebA数据集上进行人脸属性识别任务

    在本博客中 我们将介绍如何使用多任务学习 Multi Task Learning MTL 模型在CelebA数据集上进行人脸属性识别 我们将详细介绍数据准备 模型构建 训练和评估的过程 最后 我们将展示如何使用训练好的模型对新的图像进行属性
  • dn-detr:通过去噪任务加速detr训练

    dn detr 通过去噪任务加速detr训练 论文链接 https arxiv org abs 2203 01305 自DETR问世以来 transformer被引入到了目标检测领域 DETR通过引入query和bipartite grap
  • 基础算法5——双指针

    双指针算法 双指针是一种编程思想 不是某种具体的编程套路或是算法 很多需要双重暴力循环解决的问题 用双指针的思想都可以大大减少复杂度 for i 0 j 0 i lt n i while j lt i check i j j 每道题目的具体
  • 【疑难杂症】解决苹果MacOS升级提示“验证固件时发生错误”,无论如何都无法升级更新,主板Boot Rom、SMC版本号更新!

    如果你试了网上流传的通用解决办法 dmg没出错 修改dns 修改系统时间 断网安装 制作U盘镜像等 还没有升级成功 很可能你和我遇到的是同样问题 我的机器是Macbook Pro 2015 具体型号是mf840 工作原因平时不怎么敢升级系统
  • 2018 公开课盘点学术篇:链接优秀年轻 AI 学者,「大讲堂」让新生 AI 学术力量被看见...

    雷锋网 公众号 雷锋网 AI 科技评论按 2018 年 AI 研习社为大家呈上了一系列公开课 让更多的 AI 学术人员得以分享 传播自己的研究成果 也让科技爱好者们 学生们 其它研究人员们增进了对人工智能相关思维 知识 应用的认识 为国内人
  • 【大数据】Flink 从入门到实践(一):初步介绍

    Flink 从入门到实践 一 初步介绍 Apache Flink 是一个框架和分布式处理引擎 用于在 无边界 和 有边界 数据流上进行 有状态 的计算 Flink 能在所有常见集群环境中运行 并能以内存速度和任意规模进行计算 1 架构 1
  • Git上传文件代码到GitHub(超详细)

    Git上传文件代码到GitHub 超详细 之前用git上传代码到GitHub上 时间一长又忘了 总结一下写下来 后面上传忘了再看 1 新建一个空文件夹 用来上传文件 空文件夹放在那里都可以 2 点进去空文件夹 鼠标右键 使用Git Bash
  • 淘汰赛冠军问题

    问题描述 有n个选手 n为2的K次方 进行比赛 两个选手中胜者参加下一场 负者出局 请求出最后的冠军 比赛的胜负由cmp 函数决定 这里是比较两个字符的大小 分析 本体很快可以想到两种方法 分治法和减治法 分治法 将选手平均分为两组 递归求