当前位置:   article > 正文

华为OD- 用户调度_od子系统调度

od子系统调度

用户调度

题目描述

在通信系统中有一个常见的问题是对用户进行不同策略的调度,会得到不同系统消耗的性能。

假设由N个待串行用户,每个用户可以使用A/B/C三种不同的调度策略。

不同的策略会消耗不同的系统资源,请你根据如下规则进行用户调度,并返回总的消耗资源数。

规则是:

相邻的用户不能使用相同的调度策略,例如:

第一个用户使用A策略,则第二个用户只能使用B和C策略。

对单的用户而言,不同的调度策略对系统资源的消耗可以规划后抽象为数值,例如:

某用户分别使用A B C策略的系统消耗,分别为15 8 17,

每个用户依次选择当前所能选择的对系统资源消耗最少的策略,局部最优,

如果有多个满足要求的策略,选最后一个。

输入描述

第一行表示用户个数N

接下来表示每一行表示一个用户分别使用三个策略的资源消耗

resA resB resC

输出描述

最优策略组合下的总的系统消耗资源数

示例一

输入

  1. 3
  2. 15 8 17
  3. 12 20 9
  4. 11 7 5

输出

24

说明

1号用户使用B策略

2号用户使用C策略

3号用户使用B策略

系统资源消耗8+9+7

代码

  1. def rules_zy(rules, k_index, i):
  2. i += 1
  3. next_kinsex = rules[i].index(min(rules[i]))
  4. if k_index == next_kinsex:
  5. if next_kinsex == 0:
  6. return min(rules[i][1], rules[i][2])
  7. elif next_kinsex == 1:
  8. return min(rules[i][0], rules[i][2])
  9. else:
  10. return min(rules[i][0], rules[i][1])
  11. else:
  12. return min(rules[i])
  13. def get_dd(client, rules):
  14. cl = []
  15. rules = rules
  16. for i in range(client - 1):
  17. k_index = rules[i].index(min(rules[i]))
  18. cl.append(rules_zy(rules, k_index, i))
  19. cl = [min(rules[0])] + cl
  20. print(cl)
  21. sum = 0
  22. for i in cl:
  23. sum += i
  24. print(sum)
  25. if __name__ == "__main__":
  26. client = int(input())
  27. rules = []
  28. for i in range(client):
  29. rules.append(list(map(int, input().split())))
  30. get_dd(client, rules)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号