能够告诉一下这个程序怎么写吗?用C++,谢谢

能够告诉一下这个程序怎么写吗?用C++,谢谢

问题描述:

完整题目在图上 这是本科在读题目 不会写谢谢 刚学一年多

图片说明

#include <iostream>
#include <cstring>
using namespace std;

int* solve(int* seed, int seedn, int seedsum, int n, int a, int b)
{
    for (int i = b; i >= a; i--)
    {
        if (seedsum + i <= n)
        {
            int *seed1 = new int[seedn + 1];
            if (seedn > 0);
                memcpy(seed1, seed, sizeof(int) * (seedn));
            seed1[seedn] = i;
            if (seedsum + i == n) return seed1;
            int * p = solve(seed1, seedn + 1, seedsum + i, n, a, b);
            if (p != NULL) return p; 
        }
    }
    return NULL;
}
int main()
{
    int n, a, b;
    cin >> n >> a >> b;
    int *p = solve(NULL, 0, 0, n, a, b);
    if (p == NULL)
        cout << "NO" << endl;
    else
    {
        int sum = n;
        int i = 0;
        while (sum > 0)
        {
            i++;
            sum -= *p;
            p++;
        }
        p = p - i;
        cout << "YES" << endl;
        for (int j = i - 1; j >= 0; j--)
            cout << p[j] << " ";
    }
   return 0;
}

在线测试通过
https://www.ideone.com/1SOcoJ