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

该篇文章介绍了一种算法,用于解决通信系统中用户调度的问题,目标是在满足相邻用户不使用相同策略的条件下,找到使系统总消耗资源最少的策略组合。算法通过递归和条件判断实现,给定用户及其不同策略的资源消耗,计算并输出最优组合的总消耗资源数。
摘要由CSDN通过智能技术生成

# 题目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
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值