zoukankan      html  css  js  c++  java
  • C++练习 | 在递增序列中查找最后一个小于等于指定数的元素

    #include <iostream>
    using namespace std;
    int mid,l0;
    int solve(int a1[],int l,int r,int x)
    {
        if(l==r&&l==1&&a1[l]>x)
            return -1;
        if(l==r&&a1[l]<=x)
            return a1[l];
        if(l==r&&a1[l]>x)
            return solve(a1,l0,mid,x);
        mid=(l+r)/2;
        l0=l;
        if(a1[mid]>x)
            return solve(a1,l,mid-1,x);
        else if(a1[mid]==x)
            return a1[mid];
        else
            return solve(a1,mid+1,r,x);
    }
    
    int main()
    {
        int a[107];
        int n,m,x;
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        while(m--)
        {
            cin>>x;
            cout<<solve(a,1,n,x)<<endl;
        }
        return 0;
    }

    要注意考虑只剩一个元素时的求解

  • 相关阅读:
    常见的arp欺骗
    ARP欺骗分析
    周总结
    周总结
    周总结
    win10下 修改host文件 新添域名不生效
    周总结
    周总结
    周总结
    周总结
  • 原文地址:https://www.cnblogs.com/tsj816523/p/10715331.html
Copyright © 2011-2022 走看看