能够告诉一下这个程序怎么写吗?用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;
}