# 题目21 最优策略组合下的总的系统消耗资源数(标)
# 在通信系统中有一个常见的问题是对用户进行不同策略的调度
# 会得到不同系统消耗的性能
# 假设由N个待串行用户,每个用户可以使用A/B/C三种不同的调度策略
# 不同的策略会消耗不同的系统资源
# 请你根据如下规则进行用户调度
# 并返回总的消耗资源数
# 规则是:相邻的用户不能使用相同的调度策略
# 例如:
# 第一个用户使用A策略 则第二个用户只能使用B和C策略
# 对单的用户而言,不同的调度策略对系统资源的消耗可以规划后抽象为数值
# 例如
# 某用户分别使用ABC策略的系统消耗,分别为15 8 17
# 每个用户依次选择当前所能选择的对系统资源消耗最少的策略,局部最优
# 如果有多个满足要求的策略,选最后一个
#
# 输入描述:
# 第一行表示用户个数N
# 接下来表示每一行表示一个用户分别使用三个策略的资源消耗
# resA resB resC
#
# 输出描述:
# 最优策略组合下的总的系统消耗资源数
#
# 示例一:
# 输入:
# 3
# 15 8 17
# 12 20 9
# 11 7 5
# 输出:
# 24
# 说明:
# 1号用户使用B策略
# 2号用户使用C策略
# 3号用户使用B策略
# 系统资源消耗8+9+7
# ————————————————
'''
def netchoice(xvalue,y,curn,resource,result):
if y==len(resource):
result.append(curn)
return
for j in range(len(resource[0])):
if j != xvalue:
temp = curn
curn+=resource[y][j]
netchoice(j,y+1,curn,resource,result)
curn = temp
while True:
try:
n = int(input())
resource = []
result=[]
for i in range(n):
resource.append(list(map(int,input().split())))
for i in range(len(resource[0])):
netchoice(i,1,resource[0][i],resource,result)
print(min(result))
except:
break
'''
题目21 最优策略组合下的总的系统消耗资源数
该篇文章介绍了一种算法,用于解决通信系统中用户调度的问题,目标是在满足相邻用户不使用相同策略的条件下,找到使系统总消耗资源最少的策略组合。算法通过递归和条件判断实现,给定用户及其不同策略的资源消耗,计算并输出最优组合的总消耗资源数。
摘要由CSDN通过智能技术生成