zoukankan      html  css  js  c++  java
  • 14. 求有序数组中一对值,使和等于输入值

    类似于算法导论2.3-7,它要求在一个无序集合中找出2个数和等于x。首先对它排序,快排O(nlgn),然后就是本题了。

    代码:

    /*
         因为已经是有序的,设置两个指针指向开始和结束,然后相加它们,若和>给定的值,则尾指针向前,若和<给定的值,则头指针向后,若和=给定的值,则退出。
         时间是O(n)
     */
    #include<iostream>
    using namespace std;
    
    
    void getsum(int *a,int begin,int end,int sum)
    {
        bool flag=false;
        while(begin<=end)
        {
            if(a[begin]+a[end]==sum)
            {
                flag=true;
                break;
            }
            else if(a[begin]+a[end]<sum)
                begin++;
            else
                end--;
        }
        if(flag)
            cout<<a[begin]<<""<<a[end]<<"的和是"<<sum<<endl;
        else
            cout<<"没有2个元素的和是"<<sum<<endl;
    
    }
    
    int main(void)
    {
        int a[]={1,2,4,7,11,15};
    
        int sum;
        cin>>sum;
        getsum(a,0,5,sum);
        return 0;
    }

     打印所有的,在a[begin]+a[end]==sum时继续下去就OK了。

  • 相关阅读:
    EasyARM-Linux工具
    EasyARM-Linux文件系统
    EasyARM-Linux使用
    公差-PCBA
    novoton-USBDevice使用
    novoton-RTC使用
    novoton-ADC使用
    novoton-I2C使用
    novoton-timer使用
    novoton-usart使用
  • 原文地址:https://www.cnblogs.com/buxianghe/p/3210593.html
Copyright © 2011-2022 走看看