[关闭]
@natsumi 2017-03-26T13:17:05.000000Z 字数 591 阅读 995

任务分配的问题

Algorithms


题目

有n个工程师,6个任务(编号为0, 1, 2, 3, 4, 5),讲6个任务分配给工程师,每个任务分配一个工程师,有多少中分配方法。
输入:
第一行为n,后面n行表示每个工程师能完成的任务编号,如“045”表示能完成任务0和4和5。

分析

暴力枚举每个位置工作的安排情况记录答案即可。

C++代码

作者:NotDeep
链接:https://www.nowcoder.com/discuss/22696?type=0&order=0&pos=4&page=2
来源:牛客网

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector<string> a;
  4. int n;
  5. int b[10];
  6. int ret;
  7. void dfs(int i) {
  8. if(i == a.size()) {
  9. ret++;
  10. } else {
  11. for(int j = 0; j < a[i].size(); j++) {
  12. if(b[a[i][j] - '0']) {
  13. b[a[i][j] - '0'] = 0;
  14. dfs(i + 1);
  15. b[a[i][j] - '0'] = 1;
  16. }
  17. }
  18. }
  19. }
  20. int main() {
  21. cin >> n;
  22. for(int i = 0; i < n; i++) {
  23. string x; cin >> x;
  24. a.push_back(x);
  25. }
  26. for(int i = 0; i < 10; i++) b[i] = 1;
  27. ret = 0;
  28. dfs(0);
  29. cout << ret << endl;
  30. return 0;
  31. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注