栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

求解递增序列中与X最接近元素(C++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

求解递增序列中与X最接近元素(C++)

二分查找和分治算法。

思路:有以下几种情况:1、当恰好存在与X等值的元素时,答案就是这一元素;2、当元素都大于X时,答案就是最小元素;3、当元素都小于X时,答案就是最大元素;4、当既有小于也有大于X的元素时,返回差的绝对值最小的。

代码如下:

#include
#include
#include
using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;
    
    vector a;
    vector b;
    
    for (int i = 0; i < n; ++i)
    {
        int temp;
        cin >> temp;
        a.push_back(temp);
    }
    
    for (int i = 0; i < m; ++i)
    {
        int temp;
        cin >> temp;
        vector::iterator it1 = lower_bound(a.begin(), a.end(), temp);
        vector::iterator it2 = upper_bound(a.begin(), a.end(), temp);
        if (*it1 < *it2) b.push_back(*it1);
        else b.push_back(*(it1 - 1));
    }

    vector:: iterator it;
    for(it = b.begin(); it != b.end(); ++it) cout << *it << endl;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026719.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号