给3个组员分配任务
[题目链接](https://www.nowcoder.com/practice/dbf078efb7b64f80806fbf33b9b19cf5)
思路
将 个任务分配给三位员工,每人分别不超过
、
、
个,求方案数。
直接枚举:设员工小v分到 个任务,员工小i分到
个任务,则员工小o分到
个任务。只需满足:
且
枚举 和
,检查
是否合法即可。由于
,双重循环最多
次,完全没有性能问题。
代码
class Solution {
public:
int assignJobs(int n, int x, int y, int z) {
int count = 0;
for (int a = 0; a <= x && a <= n; a++) {
for (int b = 0; b <= y && b <= n - a; b++) {
int c = n - a - b;
if (c >= 0 && c <= z) {
count++;
}
}
}
return count;
}
};
import java.util.*;
public class Solution {
public int assignJobs (int n, int x, int y, int z) {
int count = 0;
for (int a = 0; a <= x && a <= n; a++) {
for (int b = 0; b <= y && b <= n - a; b++) {
int c = n - a - b;
if (c >= 0 && c <= z) {
count++;
}
}
}
return count;
}
}
复杂度分析
- 时间复杂度:
,最坏情况下为
,其中
。
- 空间复杂度:
。

京公网安备 11010502036488号