C++计蒜客求充气求帮个忙

C++计蒜客求充气求帮个忙

问题描述:

尽量用C++写, 不要太复杂,能够让我这个xin shou理解,如果能够bang mang, fei chang gan xie!
img

img


#include<iostream>

using namespace::std;

int main()
{
    int n, m, r;

    cout << "请分别输入气球数n,魔法剂数m以及气球最多承受气体质量r:" << endl;
    scanf_s("%d %d %d", &n, &m, &r, 4, 4, 4);

    int* marry = new int[m];
    int* narry = new int[n];
    bool* mbool = new bool[m];
    for (int i = 0; i < m; ++i)
        mbool[i] = true;

    cout << "请分别输入每个魔法剂生成的气体质量:" << endl;
    for (int i = 0; i < m; ++i)
    {
        scanf_s("%d", &marry[i], 4);
    }

    cout << "请分别输入每个气球的初始气体含量:" << endl;
    for (int i = 0; i < n; ++i)
    {
        scanf_s("%d", &narry[i], 4);
    }

    int result = -1;
    int k = -1;//记录最后一个j值
    for (int i = 0; i < n; ++i)
    {
        int need = r - narry[i];
        result = -1;
        k = -1;
        for (int j = 0; j < m; ++j)
        {
            if (marry[j] == need)
            {
                result = marry[j];
                k = j;
                break;
            }
                
            if (marry[j] < need && marry[j] > result && mbool[j])
            {
                result = marry[j];
                k = j;
            }                                
        }
        if (k != -1)
            mbool[k] = false;
        cout << result << endl;
    }

    return 0;
}

用的是暴力的方法,一个一个匹配,如果将m,n两个数组排序的话,应该会更方便些!