题目
思路
暴力模拟吧。。
AC代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k, M, D;
cin >> n >> k >> M >> D;
//有n颗糖果 k个人 每次分配的最大数量M 最大分配次数D
int candy[k + 1];
int max_ = -1;
for (int i = 1; i <= M; ++i) {
int temp = n;
memset(candy, 0, sizeof candy);
int num = 0; //表示分配次数
bool flag = true;
while (true) {
for (int index = 1; index <= k; ++index) {
if (index == 1) {
num++;
if (num > D) {
flag = false;
break;
}
}
if (temp < i) {
break;
}
candy[index] += i;
temp -= i;
}
max_ = max(max_, candy[1]);
if (!flag)
break;
}
}
cout << max_;
}
后记
数组没学好,为什么
int candy[k+1] = {0};
在oj上会报错??