美文网首页
A1048 Find Coins (25分)

A1048 Find Coins (25分)

作者: km15 | 来源:发表于2020-02-07 13:12 被阅读0次

    /*
    题意:
    1、一个序列中找出两个数的和等于m,其中要i最小

    解题:
    1、先排序
    2、如果a[i] + a[j] == M,则说明能找到
    a[i] + a[j] < M,则i++
    a[i] + a[j] > M,则j--

    learn && wrong:
    1、bool是变量,不是变量名字!
    2、函数又忘记名字
    */

    #include <iostream>
    #include <algorithm> 
    using namespace std;
    
    const int maxn = 100010;
    int array1[maxn];
    
    int find_perfect(int n, int a[], int M) {
        int i = 0, j = n - 1;
        while (i < j) {
            if (a[i] + a[j] == M) {
                cout << a[i] << " " << a[j] << endl;
                return 1;
            }
            else if (a[i] + a[j] < M) {
                ++i;
            }
            else {
                --j;
            }
        }
    
        return -1;
    }
    int main(int argc, char** argv) {
        int n, m;
        cin >> n >> m;
        for (int i = 0;i < n;++i) {
            cin >> array1[i];
        }
    
        sort(array1, array1 + n);
    
        int  flag = find_perfect(n, array1, m);
        if (flag ==  -1)    cout << "No Solution" << endl;
    
        return 0;
    }

    相关文章

      网友评论

          本文标题:A1048 Find Coins (25分)

          本文链接:https://www.haomeiwen.com/subject/pouuxhtx.html